il programma funziona senza problemi con gli input che sono dati da esempio e altri che ho fatto da me, ma quando vado a sottoporlo come valutazione mi dà sempre 0/100, non capisco perché
#include <iostream>
#include <cassert>
#include <utility>
#include <vector>
#include <algorithm>
using namespace std;
vector <long long int> pos;
void inizia() {
pos.clear();
}
void apri(long long p) {
pos.push_back(p);
}
void chiudi(long long p) {
auto j = find(pos.begin(), pos.end(), p);
long long int index = distance(pos.begin(),j);
pos.erase(pos.begin() + index);
}
long long chiedi(long long p) {
if (count(pos.begin(), pos.end(), p) != 0){
return p;
}
apri(p);
if (pos.size()==1){
chiudi(p);
return -1;
}
if (pos.size()==2){
chiudi(p);
return pos[0];
}
sort(pos.begin(), pos.end());
auto j = find(pos.begin(), pos.end(), p);
long long int index = distance(pos.begin(),j);
long long int f = pos[index-1];
long long int m = pos[index];
long long int t = pos[index+1];
if (m - f > t - m) {
chiudi(p);
return f;
} else {
chiudi(p);
return t;
}
}
int main() {
int Q;
cin >> Q;
inizia();
for (int i = 0; i < Q; i++){
long long p;
char t;
cin >> t >> p;
if (t == 'a') apri(p);
else if (t == 'c') chiudi(p);
else cout << chiedi(p) << endl;
}
return 0;
}