Pagini recente » Cod sursa (job #2384910) | Cod sursa (job #560788) | Cod sursa (job #2642385) | Cod sursa (job #2397565) | Cod sursa (job #3135657)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");
set<long long> z;
priority_queue<pair<int, pair<int, int>>> d;
string cerinta;
long long n;
void insereaza(long long x){
auto f=z.find(x);
if(f==z.end()){
z.insert(x);
if(z.size()>=2){
auto index=z.find(x);
auto ddd=z.find(x);
ddd++;
if(index!=z.begin() and ddd!=z.end()){
auto ss=z.find(x);
ss--;
auto dd=z.find(x);
dd++;
long long dif1=abs(*ss-x);
long long dif2=abs(*dd-x);
d.push(make_pair(-dif1,make_pair(*ss,x)));
d.push(make_pair(-dif2,make_pair(*dd,x)));
}
if(index==z.begin()){
auto dd=z.find(x);
dd++;
long long dif2=abs(*dd-x);
d.push(make_pair(-dif2,make_pair(*dd,x)));
}
if(ddd==z.end()){
auto ss=z.find(x);
ss--;
long long dif1=abs(*ss-x);
d.push(make_pair(-dif1,make_pair(*ss,x)));
}
}
}
}
void sterge(long long x){
auto f=z.find(x);
if(f==z.end()){
fout<<-1<<endl;
return;
}
auto dr=z.find(x);
dr++;
if(f==z.begin() or dr==z.end())
z.erase(x);
else{
auto st=z.find(x);
st--;
d.push(make_pair(-abs(*st-*dr),make_pair(*st,*dr)));
z.erase(x);
}
}
int cauta(long long x){
return z.count(x);
}
void maxx(){
if(z.size()<2){
fout<<-1<<endl;
return;
}
else{
fout<<*z.rbegin() - *z.begin()<<endl;
}
}
void minn(){
if(z.size()<2){
fout<<-1<<endl;
return;
}
else{
while(cauta(d.top().second.first)*cauta(d.top().second.second)==0){
cout<<-d.top().first<<endl;
d.pop();}
fout<<-d.top().first<<endl;
}
}
int main()
{
while(fin>>cerinta){
if(cerinta=="I"){
fin>>n;
insereaza(n);
}
if(cerinta=="S"){
fin>>n;
sterge(n);
}
if(cerinta=="C"){
fin>>n;
fout<<cauta(n)<<endl;
}
if(cerinta=="MAX")
maxx();
if(cerinta=="MIN")
minn();
}
return 0;
}