Pagini recente » Cod sursa (job #2597585) | Cod sursa (job #2599527) | Cod sursa (job #2829686) | Cod sursa (job #339977) | Cod sursa (job #1194825)
//
// main.cpp
// zeap
//
// Created by Alex Petrache on 04/06/14.
// Copyright (c) 2014 Alex Petrache. All rights reserved.
//
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
set<int> hp;
multiset<int> Q;
void del(int val){
set<int>::iterator it,it1,it2;
multiset<int>::iterator a1,a2;
it=hp.find(val);
if (it==hp.end()){
printf("-1\n");
return;
}
it1=it;
if (it1!=hp.begin())
--it1;
it2=it;
++it2;
if (it1!=it)
Q.erase(Q.find(abs(val-*it1)));
if (it2!=hp.end())
Q.erase(Q.find(abs(*it2-val)));
if (it2!=hp.end() && it1!=it)
Q.insert(*it2-*it1);
hp.erase(*it);
}
void insert(int val){
set<int>::iterator i1,i2,it;
if (hp.size()==0){
hp.insert(val);
return;
}
i2 = hp.lower_bound(val);
if (*i2 == val)
return;
i1 = i2;
if (i1!=hp.begin())
--i1;
if (i2!=hp.end())
Q.insert(abs(*i2-val));
if (i1!=i2)
Q.insert(abs(*i1-val));
hp.insert(val);
}
void search(int val){
set<int>::iterator it;
it=hp.find(val);
it==hp.end()?printf("0\n"):printf("1\n");
}
void MAX(){
set<int>::iterator it,it2;
if (hp.size()<2){
printf("-1\n");
return;
}
it=hp.end();--it;
it2=hp.begin();
printf("%d\n",*it-*(hp.begin()));
}
void MIN(){
set<int>::iterator it1,it2;
if (hp.size()<2){
printf("-1\n");
return;
}
printf("%d\n",*(Q.begin()));
}
int main(){
char s[30],type;
int val,i;
freopen("zeap.in","r",stdin);
freopen("zeap.out","w",stdout);
//freopen("/Users/alexpetrache/Documents/Programare/Xcode/zeap/zeap/zeap.in","r",stdin);
//freopen("/Users/alexpetrache/Documents/Programare/Xcode/zeap/zeap/zeap.out","w",stdout);
while (gets(s)){
if (strcmp(s,"MAX")==0)
MAX();
else
if (strcmp(s,"MIN")==0)
MIN();
else{
type=s[0];val=0;
for (i=2;s[i]>='0' && s[i]<='9';++i)
val=val*10+s[i]-'0';
if (type=='I')
insert(val);
else
if (type=='S')
del(val);
else
search(val);
}
}
}