Ciao, mi da 0/100 come esito, nella subtask 1 é tutto giusto, nella subtask 2 8 giusti mentre 13 errati e vorrei capire cosa c’é di sbagliato nel codice. Grazie
#include <bits/stdc++.h>
using namespace std;
#define ll long long
set<int> autostrada;
void inizia(){
return;
}
void apri(ll p)
{
autostrada.insert(p);
}
void chiudi(ll p)
{
autostrada.erase(p);
}
long long chiedi(ll p)
{
if (autostrada.empty())
return -1;
auto dopo = autostrada.lower_bound(p);
auto prima = dopo;
if (dopo == autostrada.end())
{
return *prev(autostrada.end());
}
if (dopo == autostrada.begin())
{
return *dopo;
}
--prima;
ll dist_prima = abs(*prima - p);
ll dist_dopo = abs(*dopo - p);
if (dist_prima > dist_dopo)
{
return *dopo;
}
else if (dist_dopo > dist_prima)
{
return *prima;
}
else
{
return max(*prima, *dopo);
}
}