Pagini recente » Cod sursa (job #1767549) | Cod sursa (job #118728) | Cod sursa (job #2387584) | Cod sursa (job #502470) | Cod sursa (job #151131)
Cod sursa(job #151131)
using namespace std;
#include<cstdio>
#include<set>
int main()
{
char A[16];
int i,x,ok;
set<int> S;
set<int>::iterator it1,it2,it;
multiset<int> M;
freopen("zeap.in","r",stdin);
freopen("zeap.out","w",stdout);
while(gets(A))
if(A[0]=='I' || A[0]=='S' || A[0]=='C')
{
for(x=0,i=2;A[i];++i)
x=x*10+A[i]-'0';
if(A[0]=='I')
{
it1=it2=it=S.lower_bound(x);
if(it!=S.end() && *it==x)
continue;
ok=1;
if(it!=S.begin())
S.insert(--it1,x);
else
S.insert(x), ok=0;
if(ok)
M.insert(x-*it1);
if(it2!=S.end())
M.insert(*it2-x);
else
ok=0;
if(ok)
M.insert(*it2-*it1);
}
if(A[0]=='S')
{
it1=it2=it=S.find(x);
if(it1==S.end())
{
printf("-1\n");
continue;
}
ok=1;
if(it1!=S.begin())
M.erase(M.find(x-*(--it1)));
else
ok=0;
if(++it2!=S.end())
M.erase(M.find(*it2-x));
else
ok=0;
if(ok)
M.insert(*it2-*it1);
S.erase(it);
}
if(A[0]=='C')
printf("%d\n",S.count(x));
}
else
if(A[1]=='A')
printf("%d\n",*S.rbegin()-*S.begin());
else
printf("%d\n",*M.begin());
return 0;
}