Cod sursa(job #2460774)
Utilizator | Data | 24 septembrie 2019 12:33:42 | |
---|---|---|---|
Problema | Zeap | Scor | 30 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 2.3 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");
string s;
set <int> a;
multiset <int> dif;
set <int> :: iterator it, itr, itl;
int main()
{
while(fin >> s)
{
int x;
if(s == "I")
{
fin >> x;
it = a.insert(x).first;
if(a.size() == 1) continue;
itr = it;
itl = it;
itr++;
if(it == a.begin())
{
dif.insert(*itr-*it);
}
else
if(itr == a.end())
{
itl--;
dif.insert(*it-*itl);
}
else
{
itl--;
dif.erase(*itr-*itl);
dif.insert(*itr-*it);
dif.insert(*it-*itl);
}
}
else
if(s == "S")
{
fin >> x;
if(a.find(x) == a.end())
fout << -1 << '\n';
else
{
it = a.find(x);
itr = it;
itr++;
itl = it;
if(itr != a.end())
{
//itr++;
dif.erase(*itr-*it);
}
if(it != a.begin())
{
itl--;
dif.erase(*it-*itl);
}
if(it != a.begin() && it != a.end())
dif.insert(*itr-*itl);
a.erase(x);
}
}
else
if(s == "MAX")
{
it = a.end();
it--;
fout << *it-*a.begin() << '\n';
}
else
if(s == "C")
{
fin >> x;
if(a.find(x) == a.end())
fout << 0 << '\n';
else
fout << 1 << '\n';
}
else
fout << *dif.begin() << '\n';
}
return 0;
}