Pagini recente » Cod sursa (job #3341927) | Cod sursa (job #2048272) | Cod sursa (job #935027) | Cod sursa (job #3334915) | Cod sursa (job #3349505)
#include <bits/stdc++.h>
#define int long long
#define xmax 1000000000
using namespace std;
ifstream in ("zeap.in");
ofstream out ("zeap.out");
struct zeap{
set <int> s={-67*xmax,67*xmax};
multiset <int> dif={2*67*xmax};
void ins(int x)
{
s.insert(x);
auto poz=s.find(x),pv=prev(poz),nx=next(poz);
dif.erase(*nx-*pv);
dif.insert(*poz-*pv);
dif.insert(*nx-*poz);
}
int ers(int x)
{
if (s.find(x)==s.end())
return -1;
auto poz=s.find(x),pv=prev(poz),nx=next(poz);
dif.insert(*nx-*pv);
dif.erase(*poz-*pv);
dif.erase(*nx-*poz);
s.erase(x);
return 0;
}
bool fnd(int x)
{
return s.find(x)!=s.end();
}
int mx()
{
if (s.size()<4)
return -1;
return *prev(prev(s.end()))-*next(s.begin());
}
int mn()
{
if (s.size()<4)
return -1;
return *dif.begin();
}
}z;
signed main()
{
string s;
while(getline(in,s))
{
stringstream a;
a<<s;
if (s[0]=='I')
{
int x;
char aux;
a>>aux>>x;
z.ins(x);
}
if (s[0]=='S')
{
int x;
char aux;
a>>aux>>x;
if (z.ers(x)==-1)
out<<"-1\n";
}
if (s[0]=='C')
{
int x;
char aux;
a>>aux>>x;
out<<z.fnd(x)<<'\n';
}
if (s.substr(0,3)=="MAX")
{
out<<z.mx()<<'\n';
}
if (s.substr(0,3)=="MIN")
{
out<<z.mn()<<'\n';
}
}
return 0;
}