Pagini recente » Cod sursa (job #2334429) | Cod sursa (job #2488985) | Cod sursa (job #2011912) | Profil M@2Te4i | Cod sursa (job #461956)
Cod sursa(job #461956)
#include<fstream.h>
#include<algorithm>
#include<iostream>
using namespace std;
#define MIN(a , b) (a < b ? a: b)
inline int cmp (int a, int b ){ return a<b; }
int q,n,op[1000000],v[1000000],s,maxa[1000000],mina[1000000],Min[1000000],op1[100000],lg,sw[1000000];
ofstream g("zeap.out");
void sterge (int st, int dr, int poz, int k)
{
int i,nr1=-1, nr2;
Min[1]=10000000;
for (i=1;i<=n;i++)
if (sw[i]==1)
if (nr1==-1)
{
nr1=v[i];
mina[1]=nr1;
}
else
{
nr2=nr1;
nr1=v[i];
if (Min[1]>nr1-nr2)
Min[1]=nr1-nr2;
}
maxa[1]=nr1;
}
void insert (int st, int dr, int poz, int k)
{
int i,nr1=-1, nr2;
Min[1]=10000000;
for (i=1;i<=n;i++)
if (sw[i]==1)
if (nr1==-1)
{
nr1=v[i];
mina[1]=nr1;
}
else
{
nr2=nr1;
nr1=v[i];
if (Min[1]>nr1-nr2)
Min[1]=nr1-nr2;
}
maxa[1]=nr1;
}
void solve ()
{
int i,j,p,s1;
for (i=1;i<=q;i++)
{
if (op[i]==1)
{
p=lg;s1=0;
for (;p;p>>=1)
if (s1+p<=n && v[s1+p]<=op1[i])
s1+=p;
if (sw[s1]==0)
{
sw[s1]=1;
insert(1,n,s1,1);
}
}
if (op[i]==2)
{
p=lg;s1=0;
for (;p;p>>=1)
if (s1+p<=n && v[s1+p]<=op1[i])
s1+=p;
if (sw[s1]==1 && v[s1]==op1[i])
{
sw[s1]=0;
sterge (1,n,s1,1);
}
else
g<<"-1\n";
}
if (op[i]==3)
{
p=lg;s1=0;
for (;p;p>>=1)
if (s1+p<=n &&v[s1+p]<=op1[i])
s1+=p;
if (sw[s1]==1 && v[s1]==op1[i])
g<<"1\n";
else
g<<"0\n";
}
if (op[i]==4)
g<<maxa[1]-mina[1]<<'\n';
if (op[i]==5)
g<<Min[1]<<'\n';
}
}
void citire ()
{
char ch[15000],s[15000];
int i,nr;
ifstream f("zeap.in");
q=0;
n=0;
while (f.get(s,15))
{
f.get();
i=0;
while (s[i]!=' ' && s[i]!=0)
ch[i++]=s[i];
ch[i]=0;
if (i==1)
{
q++;
nr=0;
++i;
while (s[i]>='0' && s[i]<='9')
nr=nr*10+(s[i++]-'0');
if (ch[0]=='I')
{
op[q]=1;
op1[q]=nr;
v[++n]=nr;
}
if (ch[0]=='S')
{
op[q]=2;
op1[q]=nr;
}
if (ch[0]=='C')
{
op[q]=3;
op1[q]=nr;
}
}
else
{
if (ch[1]=='A')
op[++q]=4;
else
op[++q]=5;
}
}
f.close();
}
int main()
{
int i,j;
s=0;
citire ();
sort(v+1,v+n+1,cmp);
j=0;
for (i=1;i<n;i++)
if (v[i]!=v[i+1])
v[++j]=v[i];
v[++j]=v[n];
n=j;
for (lg=1;lg<=n;lg<<=1);
lg>>=1;
solve ();
return 0;
}