Pagini recente » Cod sursa (job #1702405) | Cod sursa (job #2769474) | Cod sursa (job #2204215) | Cod sursa (job #2056905) | Cod sursa (job #3135409)
#include <iostream>
#include <fstream>
#include <set>
#include <cmath>
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
set<int> s;
set<int> pq;
void INSERT( int x){
s.insert(x);
auto aux = s.find(x);
if(s.size()==2)
pq.insert(*aux-*s.begin());
if(s.size()>2)
{
auto aux2=aux--;
pq.insert(*aux2-*aux);
}
}
void STERGE(int x){
auto aux = s.find(x),aux2 = aux--;
int dif=*aux2-*aux;
pq.erase(dif);
aux=aux2++;
dif=*aux2-*aux;
pq.erase(dif);
aux--;
if(aux2 != s.begin() and aux != s.end())
pq.insert(*aux2 - *aux);
s.erase(x);
}
int cauta(int x){
if(s.count(x)==0)
return 0;
return 1;
}
int maxDif(){
if(s.size()<2)
return -1;
return *(s.rbegin()) - *(s.begin());
}
int minDif(){
if(!pq.empty())
return *pq.begin();
return -1;
}
int main(){
string sir;
while(f>>sir){
if(sir=="I"){
int x;
f >> x;
INSERT(x);
}
else if(sir == "S"){
int x;
f >> x;
if(s.find(x) == s.end())
g << -1 << '\n';
else{
STERGE(x);
}
}
else if(sir == "C"){
int x;
f >> x;
g << cauta( x) << '\n';
}
else if(sir =="MAX"){
g << maxDif() << '\n';}
else
g << minDif() << '\n';
}
return 0;
}