Salve a tutti, è da oggi che provo a risolvere il problema, conosco poco la struttura dei set e map e il funzionamento degli iteratori pero mi sono letto un po’ della reference e sono riuscito a risolvere i casi di esempio. Tutti gli altri testcase però mi danno Execution timed out e uno output non corretto.
#include<bits/stdc++.h>
using namespace std;
set<long long> s;
void inizia(){
}
void apri(long long p){
s.insert(p);
}
void chiudi(long long p){
s.erase(p);
}
long long chiedi(long long p){
if(s.size() == 0)
return -1;
set<long long>::iterator it_prec;
set<long long>::iterator it_succ;
auto it = lower_bound(s.begin(), s.end(), p); //primo autogrill in/dopo p
if(it != s.begin()){
it_prec = prev(it);
//cout<<*prev(it)<<endl;
if ((*it - p) > (p - *it_prec))
return *it_prec;
else
return *it;
}
else
return *it;
}
Ho visto anche i post simili ma se provo ad analizzare quei codici mi vengono mille altri dubbi quindi vorrei cercare di sistemare il mio che almeno ho fatto in modo che riesca risolvere i casi di esempio.
Ringrazio chiunque possa aiutarmi