Pagini recente » Cod sursa (job #2603262) | Cod sursa (job #728991) | Cod sursa (job #1827342) | Cod sursa (job #2360493) | Cod sursa (job #3135384)
#include <iostream>
#include <fstream>
#include <unordered_set>
#include <cmath>
#include <string>
#include <set>
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
void INSEREAZA(unordered_set<int> &Z,int x){
Z.insert(x);
}
void STERGE(unordered_set<int> &Z,int x){
Z.erase(x);
}
int CAUTA(unordered_set<int> Z,int x){
if(Z.count(x)==0)
return 0;
return 1;
}
int MAX_DIF(unordered_set<int> Z){
if(Z.size()<2)
return -1;
else{
auto a=Z.end();
auto b=Z.begin();
return abs(*a-*b);
}
}
int MIN_DIF(unordered_set<int> Z){
if(Z.size()<2)
return -1;
auto a=Z.end();
int min_dif=*a+1;
auto i1=Z.begin();
auto i2=next(Z.begin());
while(i2!=Z.end())
{
int dif=abs(*i1-*i2);
min_dif=min(min_dif,dif);
i1++;
i2++;
}
return min_dif;
}
int main() {
unordered_set<int> Z;
string a;
int x;
while(f>>a)
{
if(a=="I")
{
f>>x;
INSEREAZA(Z,x);
}
if(a=="S")
{
f>>x;
if(Z.count(x)!=0)
STERGE(Z,x);
else g<<-1<<endl;
}
if(a=="C")
{
f>>x;
g<<CAUTA(Z,x)<<endl;
}
if(a=="MIN")
{
g<<MIN_DIF(Z)<<endl;
}
if(a=="MAX")
{
g<<MAX_DIF(Z)<<endl;
}
}
return 0;
}