Cod sursa(job #221819)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 18 noiembrie 2008 11:38:01
Problema Zeap Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <set>
#include <cstring>
#include <algorithm>
#define oo 1000100000
using namespace std;
set<int> S;
void del(int val){
	set<int>::iterator it;
	it=S.find(val);
	if (it==S.end()){
		printf("-1\n");
		return;
	}
	S.erase(it);
}
void search(int val){
	set<int>::iterator it;
	it=S.find(val);
	it==S.end()?printf("0\n"):printf("1\n");
}
void MAX(){
	set<int>::iterator it,it2;
	if (S.size()<2){
		printf("-1\n");
		return;
	}
	it=S.end();--it;
	it2=S.begin();//printf("MAX %d %d\n",*it2,*it);
	printf("%d\n",*it-*it2);
}
void MIN(){
	set<int>::iterator it1,it2;
	int minim=oo;
	if (S.size()<2){
		printf("-1\n");
		return;
	}
	it2=S.begin();++it2;
	for (;it2!=S.end();++it2){
		it1=it2;
		--it1;
		minim=min(minim,*it2-*it1);
	}
	printf("%d\n",minim);
}
main(){
	char s[30],type;
	int val,i;
	freopen("zeap.in","r",stdin);
	freopen("zeap.out","w",stdout);
	while (gets(s)){
		if (strcmp(s,"MAX")==0)
			MAX();
		else
			if (strcmp(s,"MIN")==0)
				MIN();
			else{
				type=s[0];val=0;
				for (i=2;s[i]>='0' && s[i]<'9';++i)
					val=val*10+s[i]-'0';
				if (type=='I')
					S.insert(val);
				else
					if (type=='S')
						del(val);
					else
						search(val);
			}
	}
}