Pagini recente » Cod sursa (job #735959) | Cod sursa (job #377910) | Cod sursa (job #2359106) | Cod sursa (job #1550377) | Cod sursa (job #2896825)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");
typedef pair<int, pair<int, int> > ppii;
set<int> bst;
priority_queue< ppii, vector<ppii>, greater<ppii> > pq;
string op;
int main() {
int nr, aux, dif;
while(fin >> op) {
if(op[0] == 'I') {
fin >> nr;
if(bst.find(nr) == bst.end()) {
bst.insert(nr);
set<int>::iterator p = bst.find(nr);
if( p != bst.begin() ) {
set<int>::iterator vecin = p;
--vecin;
pq.push(make_pair(*p - *vecin ,make_pair(*vecin, *p)));
}
if( p != --bst.end() ) {
set<int>::iterator vecin = p;
++vecin;
pq.push(make_pair(*vecin - *p ,make_pair(*p, *vecin)));
}
}
} else if(op[0] == 'S') {
fin >> nr;
if(bst.find(nr) == bst.end()) fout << "-1\n";
else {
set<int>::iterator p = bst.find(nr);
if( p != bst.begin() ) {
set<int>::iterator vecinS = --p;
if( bst.find(nr) != --bst.end() ) {
set<int>::iterator vecinD = ++bst.find(nr);
pq.push(make_pair(*vecinD - *vecinS ,make_pair(*vecinS, *vecinD)));
}
}
bst.erase(nr);
}
} else if(op[0] == 'C') {
fin >> nr;
if(bst.find(nr) == bst.end()) fout << "0\n"; else fout << "1\n";
} else if(op[1] == 'A') {
if(bst.size() < 2) fout << "-1\n"; else fout << *bst.rbegin() - *bst.begin() << '\n';
} else {
if(bst.size() < 2) fout << "-1\n";
else {
while(bst.find(pq.top().second.first) == bst.end() || bst.find(pq.top().second.second) == bst.end())
pq.pop();
fout << pq.top().first << '\n';
}
}
}
return 0;
}