Pagini recente » Cod sursa (job #2031708) | Cod sursa (job #1265027) | Cod sursa (job #1070183) | Cod sursa (job #1932008) | Cod sursa (job #2395493)
#include <iostream>
#include <fstream>
#include <set>
#include <cctype>
using namespace std;
ifstream si("zeap.in");
ofstream so("zeap.out");
char s[50];
set<int>S;
multiset<int>S2;
int main()
{
while(!si.eof()) {
si.getline(s,50);
int nr=0;
if(s[0]!='M') {
int k=0;
while(!(s[k]>='0'&&s[k]<='9'))
k++;
while(s[k]>='0'&&s[k]<='9') {
nr=nr*10+(s[k]-'0');
k++;
}
}
if(s[0]=='I') {
auto it=S.find(nr);
if(it!=S.end())
continue;
if(S.size()) {
if(nr>*S.rbegin())
S2.insert(nr-*S.rbegin());
else
if(nr<*S.begin())
S2.insert(*S.begin()-nr);
else {
auto it1=S.upper_bound(nr);
auto it2=it1;
--it2;
S2.erase(S2.find(*it1-*it2));
S2.insert(nr-*it2);
S2.insert(*it1-nr);
}
}
S.insert(nr);
}
if(s[0]=='S') {
auto it=S.find(nr);
if(it==S.end())
so<<-1<<'\n';
else {
S.erase(it);
if(nr>*S.rbegin())
S2.erase(nr-*S.rbegin());
else
if(nr<*S.begin())
S2.erase(*S.begin()-nr);
else
{
auto it1=S.upper_bound(nr);
auto it2=it1;
--it2;
S2.insert(*it1-*it2);
S2.erase(S2.find(nr-*it2));
S2.erase(S2.find(*it1-nr));
}
}
continue;
}
if(s[0]=='C') {
auto it=S.find(nr);
so<<(it!=S.end())<<'\n';
}
if(s[0]=='M'&&s[1]=='A')
so<<((S.size()<2)?-1:*S.rbegin()-*S.begin())<<'\n';
if(s[0]=='M'&&s[1]=='I')
so<<((!S2.size())?-1:*S2.begin())<<'\n';
}
return 0;
}