Pagini recente » Cod sursa (job #2890474) | Cod sursa (job #1127192) | Cod sursa (job #313558) | Cod sursa (job #1159125) | Cod sursa (job #709190)
Cod sursa(job #709190)
#include <cstdio>
#include <cstring>
#include <set>
using namespace std;
#define maxn 110
int n, nr, x;
char s[maxn];
set<int> g;
multiset<int> d;
void insereaza(int nr)
{
if(g.find(nr)!=g.end())
return;
g.insert(nr);
set<int> :: iterator it, nx, pv;
it=g.find(nr);
++it;
nx=it;
--it;
if(nx!=g.end())
d.insert(*nx-*it);
if(it!=g.begin())
{
--it;
pv=it;
++it;
d.insert(*it-*pv);
if(nx!=g.end())
d.erase(d.find(*nx-*pv));
}
}
void sterge(int nr)
{
if(g.find(nr)==g.end())
{
printf("-1\n");
return;
}
set<int> :: iterator it, nx, pv;
it=g.find(nr);
++it;
nx=it;
--it;
if(nx!=g.end())
d.erase(d.find(*nx-*it));
if(it!=g.begin())
{
--it;
pv=it;
++it;
d.erase(d.find(*it-*pv));
if(nx!=g.end())
d.insert(*nx-*pv);
}
g.erase(nr);
}
int main()
{
freopen("zeap.in", "r", stdin);
freopen("zeap.out", "w", stdout);
while(fgets(s, maxn, stdin))
{
if(s[1]=='A')
{
if(g.size()<2)
printf("-1\n");
else
printf("%d\n", (*g.rbegin())-(*g.begin()));
continue;
}
if(s[1]=='I')
{
if(g.size()<2)
printf("-1\n");
else
printf("%d\n", (*d.begin()));
continue;
}
n=strlen(s);
nr=0;
for(int i=2; i<n-1; ++i)
nr=nr*10+s[i]-'0';
if(s[0]=='I')
insereaza(nr);
if(s[0]=='S')
sterge(nr);
if(s[0]=='C')
{
x=0;
if(g.find(nr)!=g.end())
x=1;
printf("%d\n", x);
}
}
return 0;
}