Pagini recente » Cod sursa (job #2153299) | Cod sursa (job #2264372) | Cod sursa (job #3155841) | Cod sursa (job #1960925) | Cod sursa (job #1525503)
#include <cstdio>
#include <set>
#include <map>
FILE* in=fopen("zeap.in","r");
FILE* out=fopen("zeap.out","w");
std::set<int> s;
std::multiset<unsigned int> m;
const int INF=2000000002;
int main()
{
jibril();
char v[20];
s.insert(-INF/2);
s.insert(INF);
m.insert((unsigned int) (INF+INF/2));
std::set<int>::iterator it;
std::multiset<unsigned int>::iterator itmap;
int x;
while(fscanf(in,"%s",v)==1)
{
if(v[0]=='I')
{
fscanf(in,"%d",&x);
it=s.upper_bound(x);it--;
if(*it!=x)
{
it++;
int v1,v2;
v2=*it;it--;
v1=*it;
itmap=m.upper_bound((unsigned int)(v2-v1) );itmap--;
m.erase(itmap);
s.insert(x);
m.insert((unsigned int) (v2-x));
m.insert((unsigned int) (x-v1));
}
}
else if(v[0]=='S')
{
fscanf(in,"%d",&x);
it=s.upper_bound(x);it--;
if(*it==x)
{
int v1,v2;it++;
v2=*it;it--;it--;
v1=*it;it++;
s.erase(it);
itmap=m.upper_bound( (unsigned int) (v2-x));itmap--;
m.erase(itmap);
itmap=m.upper_bound((unsigned int) (x-v1));itmap--;
m.erase(itmap);
m.insert((unsigned int) (v2-v1));
}
else
{
fprintf(out,"-1\n");
}
}
else if(v[0]=='C')
{
fscanf(in,"%d",&x);
it=s.upper_bound(x);it--;
if(*it==x)
{
fprintf(out,"1\n");
}
else
{
fprintf(out,"0\n");
}
}
else if(v[0]=='M' && v[1]=='A')
{
if(s.size()<4)
fprintf(out,"-1\n");
else
{
int rez=0;
it=s.end();it--;it--;
rez=*it;
it=s.begin();it++;
rez-=*it;
fprintf(out,"%d\n",rez);
}
}
else if(v[0]=='M' && v[1]=='I')
{
if(s.size()<4)
fprintf(out,"-1\n");
else
{
itmap=m.begin();
fprintf(out,"%d\n",*itmap);
}
}
}
return 0;
}