Pagini recente » Cod sursa (job #259042) | Cod sursa (job #2583600) | Cod sursa (job #2387162) | Cod sursa (job #771194) | Cod sursa (job #2751662)
#include <iostream>
#include <fstream>
#include <set>
#include <string>
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
void insereaza(set<int> &zeap, int nr)
{
if(!zeap.count(nr))
zeap.insert(nr);
}
int sterge(set<int> &zeap, int nr)
{
if(zeap.count(nr))
{
zeap.erase(nr);
return 1;
}
else
return -1;
}
int cauta(set<int> &zeap, int nr)
{
if(zeap.count(nr))
return 1;
else
return 0;
}
int dif(set<int> &zeap, 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_finala=100000001;
for(;nr2!=zeap.end();nr1++, nr2++)
{
int dif_actual=*nr2-*nr1;
if(dif_actual<dif_finala)
dif_finala=dif_actual;
}
return dif_finala;
}
}
int main()
{
set<int> zeap;
int v, nr;
string cod;
while(f>>cod)
{
if(cod=="I")
{
f>>nr;
insereaza(zeap, nr);
}
else if(cod=="S")
{
f>>nr;
v=sterge(zeap, nr);
if(v==-1)
g<<v<<"\n";
}
else if(cod=="C")
{
f>>nr;
v=cauta(zeap, nr);
g<<v<<"\n";
}
else
{
v=dif(zeap, cod);
g<<v<<"\n";
}
}
return 0;
}