Pagini recente » Cod sursa (job #2403144) | Cod sursa (job #1944477) | Cod sursa (job #472707) | Cod sursa (job #582588) | Cod sursa (job #2899522)
#include <bits/stdc++.h>
using namespace std;
//ifstream f("planeta.in");
//ofstream g("planeta.out");
ifstream f("zeap.in");
ofstream g("zeap.out");
set<int>zeap;
priority_queue<pair<int,pair<int,int>>, vector<pair<int,pair<int,int>>>, greater<pair<int,pair<int,int>>> > dif;
int x,n;
char c;
string caracter;
int main()
{
while(f>>caracter)
{
c = caracter[0];
if(c == 'I')
{
f>>n;
zeap.insert(n);
set<int>::iterator it = zeap.find(n);
if(it!=zeap.begin())
{
--it;
dif.push({n-*it,{*it,n}});
++it;
}
if(++it!=zeap.end())
{
dif.push({*it-n,{*it,n}});
}
}
if(c == 'S')
{
f >> n;
if(zeap.find(x) != zeap.end())
{
set<int>::iterator it = zeap.find(n);
set<int>::iterator it1 = ++it;
--it;
set<int>::iterator it2 = --it;
dif.push({*it1 - *it2, {*it1, *it2}});
zeap.erase(n);
}
else
{
g << -1 << '\n';
}
}
if(c == 'C')
{
f >> n;
if(zeap.find(n) == zeap.end())
g << 0 << '\n';
else
g << 1 << '\n';
}
if(c == 'M')
{
c = caracter[2];
if(c == 'N')
{
if(zeap.size() < 2)
g << -1 << '\n';
else
{
while(!dif.empty() && (zeap.find(dif.top().second.first) == zeap.end() || zeap.find(dif.top().second.second) == zeap.end()))
{
dif.pop();
}
g << dif.top().first << '\n';
}
}
if(c == 'X')
{
if(zeap.size() < 2)
g << -1 << '\n';
else
{
g << *(--zeap.end()) - *(zeap.begin()) << '\n';
}
}
}
}
return 0;
}