Pagini recente » Istoria paginii runda/simulareidk | Cod sursa (job #597924) | Cod sursa (job #1403428) | Cod sursa (job #617526) | Cod sursa (job #1490993)
#include<cstdio>
#include<cstring>
#include<set>
using namespace std;
char si[20];
struct sp
{
int x,y;
bool operator < (const sp & other) const
{
return y-x<other.y-other.x;
}
};
set<int> s1;
set<sp> s2;
int main()
{
freopen("zeap.in","r",stdin);
freopen("zeap.out","w",stdout);
set<int> :: iterator it,i2;
set<sp> :: iterator da;
int x,i,n,pa;
sp tm;
pa=0;
while(gets(si+1))
{
pa++;
n=strlen(si+1);
if(si[1]=='I')
{
x=0;
for(i=3; i<=n; i++)
x=x*10+si[i]-'0';
s1.insert(x);
it=s1.find(x);
i2=it;
i2++;
if(i2!=s1.end())
{
tm.x=(*it);
tm.y=(*i2);
s2.insert(tm);
}
i2=it;
if(it!=s1.begin())
{
i2--;
tm.x=(*i2);
tm.y=(*it);
s2.insert(tm);
}
}
else if(si[1]=='S')
{
x=0;
for(i=3; i<=n; i++)
x=x*10+si[i]-'0';
it=s1.find(x);
if(it!=s1.end())
{
if(it!=s1.begin())
{
i2=it;
i2++;
it--;
if(i2!=s1.end())
{
tm.x=(*it);
tm.y=(*i2);
s2.insert(tm);
}
}
s1.erase(x);
}
else
printf("-1\n");
}
else if(si[1]=='C')
{
x=0;
for(i=3; i<=n; i++)
x=x*10+si[i]-'0';
if(s1.find(x)!=s1.end())
printf("1\n");
else
printf("0\n");
}
else if(si[2]=='A')
{
it=s1.begin();
i2=s1.end();
if((*it)==(*i2))
printf("-1\n");
else
{
i2--;
if((*it)==(*i2))
printf("-1\n");
else
printf("%d\n",(*i2)-(*it));
}
}
else if(si[2]=='I')
{
while(!s2.empty())
{
da=s2.begin();
tm=(*da);
if(s1.find(tm.x)!=s1.end() && s1.find(tm.y)!=s1.end())
{
printf("%d\n",tm.y-tm.x);
break;
}
else
s2.erase(tm);
}
if(s2.empty())
printf("-1\n");
}
}
return 0;
}