Pagini recente » Cod sursa (job #2615417) | Cod sursa (job #1460536) | Cod sursa (job #971760) | Cod sursa (job #917320) | Cod sursa (job #2899604)
#include <bits/stdc++.h>
using namespace std;
ifstream in("zeap.in");
ofstream out("zeap.out");
set<int>::iterator i, i1, i2, i3;
multiset<int>::iterator indexDif;
set <int> zeap;
multiset<int> diferenta;
int numar(string operatie)
{
int nr = 0;
for (int index = 2; operatie[index]; index++)
nr = nr * 10 + operatie[index] - 48;
return nr;
}
void inserare(int x){
if (zeap.find(x) == zeap.end()) {
zeap.insert(x);
i = zeap.find(x);
if (i != zeap.begin())
{
i1 = i;
i1--;
diferenta.insert(*i - *i1);
}
i2 = i;
i2++;
if (i2 != zeap.end())
diferenta.insert(*i2 - *i1);
}
}
void stergere(int x){
if (zeap.find(x) == zeap.end())
out << -1 << '\n';
else
{
i = zeap.find(x);
if (i != zeap.begin())
{
i1 = i;
i1--;
diferenta.erase(diferenta.find(*i - *i1));
i3 = i;
i3++;
if (i3 != zeap.end())
diferenta.insert(*i3 - *i1);
}
i2 = i;
i2 ++;
if (i2 != zeap.end())
diferenta.erase(diferenta.find(*i2 - *i));
zeap.erase(i);
}
}
void cautare(int x){
if (zeap.find(x) != zeap.end())
out << 1 << '\n';
else
out << 0 << '\n';
}
void maxim(){
if (zeap.size() < 2)
out << -1 << '\n';
else{
i2 = zeap.end();
i2--;
i1 = zeap.begin();
out << *i2 - *i1 << '\n';
}
}
void minim(){
if (diferenta.empty() == 1)
out << -1 << '\n';
else
{
indexDif = diferenta.begin();
}
}
int main() {
string operatie;
int x;
while (getline(in, operatie))
{
if (operatie[0] == 'I')
{
x = numar(operatie);
inserare(x);
}
if (operatie[0] == 'S')
{
x = numar(operatie);
stergere(x);
}
if (operatie[0] == 'C')
{
x = numar(operatie);
if (zeap.find(x) == zeap.end())
out << 0 << '\n';
else
out << 1 << '\n';
}
if (operatie == "MIN")
{
if(zeap.size() < 2)
out << "-1" << '\n';
else
minim();
}
if (operatie == "MAX")
{
if(zeap.size() < 2)
out << "-1" << '\n';
else
out << *(--zeap.end()) - *(zeap.begin()) << '\n';
}
}
return 0;
}