Pagini recente » Cod sursa (job #322427) | Cod sursa (job #1635697) | Cod sursa (job #972728) | Cod sursa (job #2527714) | Cod sursa (job #709212)
Cod sursa(job #709212)
#include <cstdio>
#include <cstring>
#include <set>
using namespace std;
#define maxn 20
int n, nr, x;
char s[maxn];
set<int> g;
multiset<int> d;
set<int> :: iterator it, nx;
void insereaza(int nr)
{
if(g.find(nr)!=g.end())
return;
g.insert(nr);
it=g.find(nr);
nx=it;
++nx;
if(nx!=g.end())
d.insert(*nx-nr);
if(it!=g.begin())
{
--it;
d.insert(nr-*it);
if(nx!=g.end())
d.erase(d.find(*nx-*it));
}
}
void sterge(int nr)
{
if(g.find(nr)==g.end())
{
printf("-1\n");
return;
}
it=g.find(nr);
nx=it;
++nx;
if(nx!=g.end())
d.erase(d.find(*nx-nr));
if(it!=g.begin())
{
--it;
d.erase(d.find(nr-*it));
if(nx!=g.end())
d.insert(*nx-*it);
}
g.erase(nr);
}
int main()
{
freopen("zeap.in", "r", stdin);
freopen("zeap.out", "w", stdout);
while(gets(s))
{
if(s[1]=='A')
{
if(g.size()<2)
printf("-1\n");
else
{
it=g.end();
--it;
printf("%d\n", (*it)-(*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; ++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;
}