Buongiorno a tutti.
Per questo problema non riesco ad andare oltre il 40%. I test case falliscono per via del tempo.
Ho considerato l’insieme dei cestini come un vector (ho provato anche con un array) e ogni cestino come uno stack o una lista, un deque o anche un vector…ma non va oltre il 40%.
Qualche consiglio?
Usa un vector di vector
Grazie ma ho provato anche questo…
Addirittura con un vector di vector ottengo il 10 %.
Ecco qui il codice
void inizia(int N, int M){
vector<int> s;
for(int i=0;i<N;i++)
{
s.insert(s.begin(),i);
}
cestini.push_back(s);
for(int i=1;i<M;i++)
{
vector<int> s;
cestini.push_back(s);
}
}
void sposta(int a, int b){
cestini[b].insert(cestini[b].begin(),cestini[a].at(0));
cestini[a].erase(cestini[a].begin());
}
int controlla(int a, int i){
if (cestini[a].size()<i+1) return -1;
int val=cestini[a].at(cestini[a].size()-i-1);
return val;
}
Non credo che il problema possa essere nel controlla visto che l’accesso è pseudo-diretto.
Dove perdo tempo?
Grazie ancora
Sempre meglio i push_back() rispetto alle insert() quindi prova a sostituirle nel codice.
O(1) vs O(N)
Ottimo grazie.
Adesso mi da 100%.