Cod sursa(job #2260140)
Utilizator | Data | 14 octombrie 2018 15:06:53 | |
---|---|---|---|
Problema | Zeap | Scor | 10 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 2.18 kb |
#include<bits/stdc++.h>
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
set<int> S;
multiset<int> M;
int main()
{
string s;
while(!f.eof())
{
getline(f,s);
int nr=0;
if(s[0]!='M')
{
int k=0;
for(;!(s[k]>='0' && s[k]<='9');k++);
for(;(s[k]>='0' && s[k]<='9');nr=nr*10+(s[k++]-'0'));
}
if(s[0]=='I')
{
auto it=S.find(nr);
if(it!=S.end()) continue;
if(S.size()>0)
{
if(nr>*S.rbegin())
M.insert(nr-*S.rbegin());
else
if(nr<*S.begin())
M.insert(*S.begin()-nr);
else
{
auto it1=S.upper_bound(nr);
auto it2=--it1;
M.erase(M.find(*it1-*it2));
M.insert(nr-*it2);
M.insert(*it1-nr);
}
}
S.insert(nr);
}
if(s[0]=='S')
{
auto it=S.find(nr);
if(it==S.end())
g<<-1<<'\n';
else
{
S.erase(it);
if(nr>*S.rbegin())
M.erase(nr-*S.rbegin());
else
if(nr<*S.begin())
M.erase(*S.begin()-nr);
else
{
auto it1=S.upper_bound(nr);
auto it2=it1;
--it2;
M.insert(*it1-*it2);
M.erase(M.find(nr-*it2));
M.erase(M.find(*it1-nr));
}
}
}
if(s[0]=='C')
{
auto it=S.find(nr);
g<<(it!=S.end()?1:0)<<'\n';
}
if(s[0]=='M' && s[1]=='A' && s[2]=='X')
g<<((S.size()<2)?-1:*S.rbegin()-*S.begin())<<'\n';
if(s[0]=='M' && s[1]=='I' && s[2]=='N')
g<<(!M.size() ? -1:*M.begin())<<'\n';
}
return 0;
}