Cod sursa(job #483954)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 11 septembrie 2010 00:35:58
Problema Zeap Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.06 kb
#include <cstdio>
#include <set>
#include <algorithm>

using namespace std;

#define file_in "zeap.in"
#define file_out "zeap.out"

#define nmax 20

char s[nmax];
set<int> Zeap;

void adfile(void){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);

    return ;
}

void solve(void){
	
	int i,x,ok,l;
	int min1,min2;
	int max1,max2;
	while(fgets(s,nmax,stdin)){
		
		
		l=strlen(s);
		
		if (s[0]=='I'){//inserez
			i=2;
			x=0;
			while(s[i]>='0' && s[i]<='9'){
				x=x*10+s[i]-'0';
				i++;
			}
			
			Zeap.insert(x);
		}
		
		if (s[0]=='S'){//sterg
			i=2;
			x=0;
			while(s[i]>='0' && s[i]<='9'){
				x=x*10+s[i]-'0';
				i++;
			}
			
			if (Zeap.size()==0) 
				printf("-1\n");
            else{
            set<int> :: iterator it;
			it=Zeap.find(x);
            if (it==Zeap.end()) 
				printf("-1\n"); 
            else
				Zeap.erase(x);
            }

		}
		
		if (s[0]=='C'){//caut
			i=2;
			x=0;
			while(s[i]>='0' && s[i]<='9'){
				x=x*10+s[i]-'0';
				i++;
			}
			
			printf("%d\n", (Zeap.find(x)!=Zeap.end()));
		}
		
		if (s[0]=='M' && s[1]=='I'){//minimu`
		    
			if (Zeap.size()<2)
				printf("-1\n");
			else{
				int minim=0x3f3f3f3f;
				set<int> :: iterator it;
				set<int> :: iterator it2;
				it2=Zeap.begin();
                it2++;
                for (it=Zeap.begin();it2!=Zeap.end();++it,++it2){
                if (*it2-*it==1){
                minim=1;
                break;
                }
                else 
				if (*it2-*it<=minim) 
					minim=*it2-*it;
				}
                printf("%d\n", minim);

			}	
			
		}
		
		if (s[0]=='M' && s[1]=='A'){//maximu`
		    
			if (Zeap.size()<2)
				printf("-1\n");
			else{
				int val=0;
				set<int> :: iterator it;
                it=Zeap.begin();
                val=*it;
                it=Zeap.end(); 
                it--;
                val=*it-val;
                printf("%d\n",val);
			}	
			
		}
			
			
	}
}

int main(){
	
	adfile();
	solve();
	
	return 0;
	
}