Pagini recente » Cod sursa (job #705748) | Cod sursa (job #2902467) | Cod sursa (job #2434039) | Cod sursa (job #1117519) | Cod sursa (job #108705)
Cod sursa(job #108705)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <fstream.h>
#define MAXL 1000000002
ofstream fout("zeap.out");
long a[300009],n,max,min,pozmax,pozmin,nr,numar;
char sir[30];
void inserare(long x){
a[n++]=x;
nr++;
}
void stergere(long x){
long i;
for (i=0;i<n;i++)
if (a[i]==x){
a[i]=MAXL;
break;
}
if (i==n)
fout<<"-1\n";
else
nr--;
}
void caut(long x){
long i;
for (i=0;i<n;i++)
if (a[i]==x){
fout<<"1\n";
break;}
if (i==n)
fout<<"0\n";
}
void maxim(){
for (long i=0;i<n;i++)
if (a[i]!=MAXL)
if (a[i]>max){
max=a[i];
pozmax=i;}
}
void minim(){
for (long i=0;i<n;i++)
if (a[i]!=MAXL)
if (a[i]<min){
min=a[i];
pozmin=i;}
}
void max_x(){
if (nr<2)
fout<<"-1\n";
else{
if (a[pozmax]==MAXL) {
max=-2000000000;
maxim(); }
if (a[pozmin]==MAXL) {
min=MAXL;
minim();
}
fout<<max-min<<"\n";
}
}
void min_x(){
if (nr<2)
fout<<"-1\n";
else {
long mini=1000000001;
for (long i=0;i<n-1;i++)
if (a[i]!=MAXL)
for (long j=i+1;j<n;j++)
if (a[j]!=MAXL)
if (fabs(a[j]-a[i])<mini)
mini=fabs(a[j]-a[i]);
fout<<mini<<"\n";
}
}
void formare(int e){
for (int i=e;i<strlen(sir)-1;i++)
numar=numar*10+sir[i]-'0';
}
void citire(){
freopen ("zeap.in","r",stdin);
while (!feof(stdin)){
fgets(sir,20,stdin);
numar=0;
if (sir[0]=='I'){
formare(2);
inserare(numar);}
else
if (sir[0]=='S'){
formare(2);
stergere(numar);}
else
if (sir[0]=='C'){
formare(2);
caut(numar);}
else
if (sir[1]=='A')
max_x();
else
min_x();
}
fclose(stdin);
}
int main(){
a[300001]=MAXL;
max=MAXL;
min=MAXL;
pozmax=300001;
pozmin=300001;
n=0;
citire();
fout.close();
return 0;
}