Pagini recente » Cod sursa (job #2705439) | Cod sursa (job #349702) | Cod sursa (job #829467) | Cod sursa (job #2530459) | Cod sursa (job #2750701)
#include <bits/stdc++.h>
using namespace std;
ofstream fout("zeap.out");
set<int> s;
int Numar(char lin[])
{
int i, nr = 0;
for(i = 2; lin[i] != '\n'; i++)
nr = nr * 10 + (lin[i] - '0');
return nr;
}
void Insereaza(int x)
{
s.insert(x);
}
int Cauta(int x)
{
return s.count(x);
}
int Sterge(int x)
{
if(!Cauta(x))
return 0;
s.erase(s.find(x));
return 1;
}
int MaxDif()
{
return *s.rbegin() - *s.begin();
}
int MinDif() // :')
{
set<int>::iterator it = s.begin();
int val = *it;
it++;
int dif = 1e9;
while(it != s.end())
{
dif = min(dif, *it - val);
it++;
}
return dif;
}
int main()
{
int x;
FILE * pFile;
char lin[14];
pFile = fopen ("zeap.in", "r");
while(fgets(lin, 14, pFile) != NULL)
{
if(lin[0] == 'I')
{
x = Numar(lin);
Insereaza(x);
}
else if(lin[0] == 'S')
{
x = Numar(lin);
if(!Sterge(x))
fout << -1 << "\n";
}
else if(lin[0] == 'C')
{
x = Numar(lin);
fout << Cauta(x) << "\n";
}
else if(lin[1] == 'A') // max
{
fout << MaxDif() << "\n";
}
else // min
{
fout << MinDif() << "\n";
}
}
fclose (pFile);
return 0;
}