Cod sursa(job #2199219)
Utilizator | Data | 26 aprilie 2018 22:24:33 | |
---|---|---|---|
Problema | Zeap | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.12 kb |
#include<bits/stdc++.h>
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
string sir;
int nr;
int maxi,mini;
set<int>s;
set<int> ::iterator it,it2,it1;
multiset<int>s2;
int main()
{
while(f>>sir)
{
if(sir[0]!='M')
f>>nr;
if(sir[0]=='I')
{
it=s.find(nr);
if(it==s.end())
{
if(s.size())
{
it=s.end();
--it;
if(nr>*it)
s2.insert(nr-*it);
else
if(nr<*s.begin())
{
it=s.begin();
if(*it>nr)
s2.insert(*it-nr);
}
else
{
it1=upper_bound(s.begin(),s.end(),nr);
it2=it1;
--it2;
s2.erase(*it1-*it2);
s2.insert(nr-*it2);
s2.insert(*it1-nr);
}
}
s.insert(nr);
}
}
if(sir[0]=='S')
{
it=s.find(nr);
if(it==s.end())
g<<-1<<'\n';
else
{
s.erase(nr);
it1=it;
++it1;
if(it1==s.end())
{
it1=it;
--it1;
s2.erase(nr-*it1);
}
else
if(nr==*s.begin())
{
it1=s.begin();
if(*it1==nr)
{
++it1;
s2.erase(*it1-nr);
continue;
}
}
else
{
it1=upper_bound(s.begin(),s.end(),nr);
it2=it1;
--it2;
s2.insert(*it1-*it2);
s2.erase(nr-*it2);
s2.erase(*it1-nr);
}
}
}
if(sir[0]=='C')
{
it=s.find(nr);
if(it!=s.end())
g<<1<<'\n';
else
g<<0<<'\n';
}
if(sir[0]=='M' && sir[1]=='A')
{
if(s.size()<2)
g<<-1<<'\n';
else
{
it=s.begin();
it2=s.end();
while(it2==s.end())
--it2;
g<<*it2-*it<<'\n';
}
}
if(sir[0]=='M' && sir[1]=='I')
{
if(s.size()<2)
g<<-1<<'\n';
else
{
it=s2.begin();
g<<*it<<'\n';
}
}
}
return 0;
}