Pagini recente » Cod sursa (job #890235) | Cod sursa (job #1645825) | Cod sursa (job #208635) | Cod sursa (job #663039) | Cod sursa (job #2749749)
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <map>
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");
set<int>z;
#define ll long long
multiset<ll>dif;
const ll INF=2000000001;
int main()
{
string op;
z.insert(INF);
z.insert(-INF);
dif.insert(2*INF);
while(fin>>op)
{
if(op=="I")
{
int x;
fin>>x;
if(z.find(x)==z.end())
{
z.insert(x);
auto it=z.find(x);
auto itst=z.find(x);
--itst;
auto itdr=z.find(x);
++itdr;
dif.erase(dif.find((ll)*itdr-(ll)*itst));
dif.insert((ll)*itdr-(ll)*it);
dif.insert((ll)*it-(ll)*itst);
}
}
else if(op=="S")
{
int x;
fin>>x;
auto it=z.find(x);
if(it!=z.end())
{
auto itst=z.find(x);
--itst;
auto itdr=z.find(x);
++itdr;
dif.erase(dif.find((ll)*itdr-(ll)*it));
dif.erase(dif.find((ll)*it-(ll)*itst));
dif.insert((ll)*itdr-(ll)*itst);
z.erase(x);
}
else fout<<"-1\n";
}
else if(op=="C")
{
int x;
fin>>x;
if(z.find(x)!=z.end())
fout<<1<<"\n";
else fout<<0<<"\n";
}
else if(op=="MAX")
{
if(z.size()>3)
fout<<*(--(--z.end()))-*(++z.begin())<<"\n";
else fout<<-1<<"\n";
}
else
{
if(z.size()>3)
fout<<*dif.begin()<<"\n";
else fout<<"-1\n";
}
}
}