Pagini recente » Cod sursa (job #1146949) | Cod sursa (job #2110435) | Cod sursa (job #1360613) | Cod sursa (job #595797) | Cod sursa (job #339126)
Cod sursa(job #339126)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define file_in "zeap.in"
#define file_out "zeap.out"
#define Inf 0x3f3f3f3f
long int nr,zeap[301000];
char s[20];
void insert(long int x)
{
long int ok=0,i;
for (i=1;i<=nr && !ok;++i)
if (zeap[i]==x)
ok=1;
if (!ok)
zeap[++nr]=x;
}
void sterge(long int x)
{
long int ok=0,poz,i;
for (i=1;i<=nr && !ok;++i)
if (zeap[i]==x)
poz=i,
ok=1;
if (!ok)
printf("-1\n");
else
{
for (i=poz;i<=nr;++i)
zeap[i]=zeap[i+1];
nr--;
//return 0;
}
}
long int cauta(long int x)
{
long int ok=0,i;
for (i=1;i<=nr && !ok;++i)
if (zeap[i]==x)
ok=1;
return ok;
}
long int max_dif()
{
sort(zeap+1,zeap+nr+1);
return zeap[nr]-zeap[1];
}
long int min_dif()
{
sort(zeap+1,zeap+nr+1);
return zeap[2]-zeap[1];
}
int main()
{
long int i,x;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
memset(zeap,0,sizeof(zeap));
nr=0;
while(gets(s))
{
//gets(s);
i=0;
if (s[0]=='I')//insert
{
i=2;
x=0;
while(s[i]>='0' && s[i]<='9')
{
x=x*10+s[i]-'0';
i++;
}
insert(x);
}
else
if (s[0]=='S')//sterge
{
i=2;
x=0;
while(s[i]>='0' && s[i]<='9')
{
x=x*10+s[i]-'0';
i++;
}
sterge(x);
//printf("-1\n");
}
else
if (s[0]=='C')//cauta
{
i=2;
x=0;
while(s[i]>='0' && s[i]<='9')
{
x=x*10+s[i]-'0';
i++;
}
printf("%ld\n", cauta(x));
}
else
if (s[0]=='M' && s[1]=='A')//max
{
if (nr<2)
printf("-1\n");
else
printf("%ld\n", max_dif());
}
else
if (s[0]=='M' && s[1]=='I')//min
{
if (nr<2)
printf("-1\n");
else
printf("%ld\n", min_dif());
}
}
fclose(stdin);
fclose(stdout);
return 0;
}