Pagini recente » Cod sursa (job #834331) | Cod sursa (job #1291775) | Cod sursa (job #2485619) | Cod sursa (job #659964) | Cod sursa (job #2751657)
#include <iostream>
#include <fstream>
#include <set>
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
set<int> zeap;
void insereaza(int nr)
{
if(zeap.find(nr)!=zeap.end())
zeap.insert(nr);
}
int sterge(int nr)
{
if(zeap.find(nr)!=zeap.end())
{
zeap.erase(nr);
return 1;
}
else
return -1;
}
int cauta(int nr)
{
if(zeap.find(nr)!=zeap.end())
return 1;
else
return 0;
}
int dif(string cod)
{
if(zeap.size()<2)
return -1;
if(cod=="MAX")
{
set<int>::iterator nr1=zeap.begin(), nr2=zeap.end();
nr2--;
return *nr2-*nr1;
}
else
{
set<int>::iterator nr1=zeap.begin(), nr2=zeap.begin();
nr2++;
int dif=100000001;
for(;nr2!=zeap.end();nr1++, nr2++)
{
if(*nr2-*nr1<dif)
dif=*nr2-*nr1;
}
return dif;
}
}
int main()
{
int v, nr;
string cod;
while(f>>cod)
{
if(cod=="I")
{
f>>nr;
insereaza(nr);
}
else if(cod=="S")
{
f>>nr;
v=sterge(nr);
if(v==-1)
g<<v<<"\n";
}
else if(cod=="C")
{
f>>nr;
v=cauta(nr);
g<<v<<"\n";
}
else
v=dif(cod);
g<<v<<"\n";
}
return 0;
}