Pagini recente » Cod sursa (job #25850) | Cod sursa (job #2074586) | Cod sursa (job #2448441) | Cod sursa (job #3154084) | Cod sursa (job #403650)
Cod sursa(job #403650)
#include<fstream>
#include<algorithm>
#include<set>
#include<string>
#include<map>
using namespace std;
const char iname[]="zeap.in";
const char oname[]="zeap.out";
ifstream f(iname);
ofstream g(oname);
map<int,int> M;
set<int> S;
string aux;
int n,i,x,y;
int main()
{
pair<set<int>::iterator,bool>r;
while(1)
{
f>>aux;
if(f.fail())
break;
if(aux=="I")
{
f>>x;
if((r=S.insert(x)).second==true)
{
set<int>::iterator now,past,future;
now=past=future=r.first;
--past;
++future;
if(now!=S.begin()&&future!=S.end())
if(--M[*future-*past]==0)
M.erase(*future-*past);
if(now!=S.begin())
++M[*now-*past];
if(future!=S.end())
++M[*future-*now];
}
f.get();
continue;
}
if(aux=="S")
{
f>>x;
set<int>::iterator now,past,future;
if((now=S.find(x))!=S.end())
{
past=future=now;
--past;
++future;
if(now!=S.begin())
if(--M[*now-*past]==0)
M.erase(*now-*past);
if(future!=S.end())
if(--M[*future-*now]==0)
M.erase(*future-*now);
if(now!=S.begin()&&future!=S.end())
++M[*future-*past];
S.erase(now);
}
else
g<<"-1\n";
f.get();
continue;
}
if(aux=="C")
{
f>>x;
if(S.find(x)!=S.end())
g<<"1\n";
else
g<<"0\n";
f.get();
continue;
}
if(S.size()<2)
{
g<<"-1\n";
f.get();
continue;
}
if(aux=="MAX")
{
set<int>::iterator now;
now=S.end();
--now;
g<<*now-*S.begin()<<"\n";
f.get();
continue;
}
g<<M.begin()->first<<"\n";
f.get();
}
f.close();
g.close();
return 0;
}