Pagini recente » Cod sursa (job #2898109) | Cod sursa (job #3265877) | Cod sursa (job #2765925) | Cod sursa (job #3245170) | Cod sursa (job #2897755)
#include <fstream>
#include <set>
#include <string>
#include <cmath>
#include <vector>
using namespace std;
set<long long >zeap;
set<long long> diferente;
int main()
{
ifstream f("zeap.in");
ofstream g("zeap.out");
string operatie;
long long nr;
long long i = 0;
while (f>>operatie)
{
if(operatie == "I") {
f >> nr;
if (zeap.find(nr) != zeap.end())
continue;
else
zeap.insert(nr);
i++;
if(zeap.size()>=2) {
long long previosnr = *next(zeap.begin(), i - 2);
diferente.insert((abs(nr-previosnr)));
}
} else if(operatie == "C")
{
f>>nr;
if(zeap.find(nr) != zeap.end())
g<<1<<'\n';
else
g<<0<<'\n';
} else if(operatie == "S")
{
i--;
f>>nr;
if(zeap.find(nr) != zeap.end()) {
set<long long >::iterator curent,previos,next;
curent = zeap.find(nr);
previos = next = curent;
previos--;
next ++;
if(curent != diferente.begin() && curent != diferente.end()) {
diferente.erase(abs(*curent - *previos));
diferente.erase(abs(*curent-*next));
} else if(curent != diferente.begin())
diferente.erase(abs(*curent-*previos));
else
diferente.erase(abs(*curent-*next));
zeap.erase(nr);
}
else
g<<-1<<'\n';
} else if(operatie == "MAX") {
if (zeap.size() < 2)
g << -1 << '\n';
else {
long long first = *next(zeap.begin(), 0);
long long last = *next(zeap.begin(), zeap.size() - 1);
g<<abs(last-first)<<'\n';
}
} else if(operatie == "MIN") {
if(zeap.size()>=2) {
long long minim = *next(diferente.begin(),0);
g << minim << '\n';
} else g<<-1<<'\n';
}
}
f.close();g.close();
return 0;
}