Pagini recente » Cod sursa (job #2717420) | Cod sursa (job #2621276) | Cod sursa (job #2899776) | Istoria paginii runda/aicluj_08-11/clasament | Cod sursa (job #108715)
Cod sursa(job #108715)
#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,pozminim1,pozminim2,minim1,minim2;
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 aflare(){
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]);
minim1=a[i];
minim2=a[j];
pozminim1=i;
pozminim2=j;}
}
void min_x(){
if (nr<2)
fout<<"-1\n";
else {
short k=0;
if (a[pozminim1]==MAXL)
k=1;
if (a[pozminim2]==MAXL)
k=1;
if (k==0)
fout<<fabs(minim1-minim2)<<"\n";
else {
aflare();
fout<<fabs(minim1-minim2)<<"\n";
}
}
}
void formare(long 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;
pozminim1=300001;
pozminim2=300001;
citire();
fout.close();
return 0;
}