Pagini recente » Cod sursa (job #1480542) | Cod sursa (job #623559) | Cod sursa (job #2819283) | Cod sursa (job #778135) | Cod sursa (job #1943773)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
set<int> heap;
char line[1000];
int abs(int x)
{
if(x>=0)
return x;
return -1 * x;
}
int main()
{
freopen("zeap.in","r",stdin);
freopen("zeap.out","w",stdout);
while(fgets(line,1000,stdin))
{
char *p = strtok(line," \n");
if(!strcmp(p,"I"))
{
int param;
p = strtok(NULL," \n");
sscanf(p,"%d",¶m);
heap.insert(param);
}
else if(!strcmp(p,"S"))
{
int param;
p = strtok(NULL," \n");
sscanf(p,"%d",¶m);
if(heap.find(param)!=heap.end())
heap.erase(param);
else printf("-1\n");
}
else if(!strcmp(p,"C"))
{
int param;
p = strtok(NULL," \n");
sscanf(p,"%d",¶m);
printf("%d\n",heap.find(param)!=heap.end());
}
else if(!strcmp(p,"MAX"))
{
printf("%d\n",*(heap.rbegin())-*(heap.begin()));
}
else if(!strcmp(p,"MIN"))
{
auto it = heap.begin(), it1 = it, it2=it1;
int k = heap.size();
advance(it,k/2);
advance(it1,k/2-1);
if(k%2==0)
printf("%d\n",abs(*it-*it1));
else
{
advance(it2,k/2+1);
printf("%d\n",min(abs(*it-*it1),abs(*it-*it2)));
}
}
}
return 0;
}