Pagini recente » Cod sursa (job #2009336) | Cod sursa (job #1702170) | Cod sursa (job #208009) | Cod sursa (job #452129) | Cod sursa (job #887660)
Cod sursa(job #887660)
#include <fstream>
#include <set>
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");
const int lmax= 12;
char ch[lmax+1];
set <int> s;
multiset <int> ms;
int read_int(){
int x= 0;
for (int i= 2; i<lmax&& ch[i]!=0; ++i){
x= x*10+ch[i]-'0';
}
return x;
}
int main(){
int ind= 0;
while (fin.getline(ch, lmax+1)){
++ind;
//printf("%d:\n", ind);
if (ch[0]=='I'){
int x= read_int();
set <int>::iterator it= s.find(x);
if (it==s.end()){
s.insert(x);
//printf("s+: %d\n", x);
it= s.find(x);
if (s.size()>1){
if (it==s.begin()){
++it;
ms.insert(*it-x);
//printf("ms+: %d\n", *it-x);
}else if (++it==s.end()){
--it; --it;
ms.insert(x-*it);
//printf("ms+: %d\n", x-*it);
}else{
int aux= *it;
--it; --it;
ms.insert(aux-x);
ms.insert(x-*it);
ms.erase(ms.find(aux-*it));
/*printf("ms+: %d\n", aux-x);
printf("ms+: %d\n", x-*it);
printf("ms-: %d\n", aux-*it);*/
}
}
}
}else if (ch[0]=='S'){
int x= read_int();
set <int>::iterator it= s.find(x);
if (it==s.end()){
fout<<"-1\n";
}else{
if (s.size()>1){
if (it==s.begin()){
++it;
ms.erase(ms.find(*it-x));
//printf("ms-: %d\n", *it-x);
}else if (++it==s.end()){
--it; --it;
ms.erase(ms.find(x-*it));
//printf("ms+: %d\n", x-*it);
}else{
int aux= *it;
--it; --it;
ms.erase(ms.find(aux-x));
ms.erase(ms.find(x-*it));
ms.insert(aux-*it);
/*printf("ms-: %d\n", aux-x);
printf("ms-: %d\n", x-*it);
printf("ms+: %d\n", aux-*it);*/
}
}
s.erase(x);
//printf("s-: %d\n", x);
}
}else if (ch[0]=='C'){
int x= read_int();
set <int>::iterator it= s.find(x);
if (it==s.end()){
fout<<"0\n";
}else{
fout<<"1\n";
}
}else{
if (ms.size()==0){
fout<<"-1\n";
}else if (ch[1]=='A'){
set <int>::iterator it_b= s.begin(), it_e= s.end();
--it_e;
//printf("%d %d\n", *it_b, *it_e);
fout<<*it_e-*it_b<<"\n";
}else{
fout<<*ms.begin()<<"\n";
}
}
}
return 0;
}