ciao ragazzi, ho bisogno di una mano sul problema overtakings. Il codice che ho scritto dà 62 punti, letteralmente non funziona il primo test case mentre gli altri sono corretti.
Ecco il codice:
#include <bits/stdc++.h>
using namespace std;
int main() {
// uncomment the following lines if you want to read/write from files
// ifstream cin("input.txt");
// ofstream cout("output.txt");
int N, Q;
cin >> N >> Q;
vector<int> C(N);
for (int i = 0; i < N; i++) {
cin >> C[i];
}
map<int,int> map; //mappa dove la keyword è n macchina e value è la posizione
for (int i = 0; i < N; i++) {
map.insert({C[i],i});
}
//set<int> s;
vector<int> nSorp(N); //vettore indice n macchina e valore è n sorpassi
for (int i = 0; i < N; i++) {
nSorp[i]=0;
}
int maxSorp;
int maxMacc;
int app;
int nSorpassi;
for (int i = 0; i < Q; i++) {
int x;
cin >> x;
nSorp[C[map[x]-1]]++;
app=C[map[x]];
C[map[x]]=C[map[x]-1];
C[map[x]-1]=app;
map[x]--;
map[C[map[x]+1]]++;
/*for (int z = 0; z < N; z++) {
cout << C[z] << " ";
}*/
nSorpassi=nSorp[C[map[x]+1]];
if(i==0){
maxSorp=1;
maxMacc=C[map[x]+1];
cout<<maxMacc<< endl;;
} else if(maxSorp>nSorpassi){
cout<<maxMacc<< endl;
} else if(maxSorp==nSorpassi){
maxMacc=min(maxMacc,C[map[x]+1]);
cout<<maxMacc<< endl;
} else {
maxSorp=nSorpassi;
maxMacc=C[map[x]+1];
cout<<maxMacc<< endl;
}
//cout << distance(nSorp.begin(), max_element(nSorp.begin(), nSorp.end())) << endl;
}
return 0;
}
ci ho passato parecchio tempo ma non trovo l’errore. Grazie in anticipo.