Pagini recente » Cod sursa (job #2811733) | Cod sursa (job #1032319) | Cod sursa (job #1002300) | Cod sursa (job #1441253) | Cod sursa (job #1936873)
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
ifstream fin( "zeap.in" );
ofstream fout( "zeap.out" );
map<int,int> mip;
set< int > sit;
set< int >::iterator it,it1,it2;
string s;
int x;
void scade( int x )
{
if( mip[ x ] == 1 )
mip.erase( x );
else
mip[ x ]--;
}
int main()
{
sit.insert( -1 );
sit.insert( 1000000001 );
while( fin>>s )
{
if( s[ 0 ] == 'I' )
{
fin>>x;
auto IT = sit.insert( x );
it = IT.f;
it1 = it2 = it;
it1--;
it2++;
if( (*it1) != -1 || (*it2) != 1000000001 )
{
if( (*it1) != -1 && (*it2) != 1000000001 )
{
scade( (*it2) - (*it1) );
mip[ (*it2) - x ]++;
mip[ x - (*it1) ]++;
}
else if( (*it1) == -1 )
{
mip[ (*it2) - x ]++;
}
else
{
mip[ x - (*it1) ]++;
}
}
}
else if( s[ 0 ] == 'S' )
{
fin>>x;
it = sit.find( x );
if( it != sit.end() )
{
it1 = it2 = it;
it1--;
it2++;
if( (*it1) != -1 || (*it2) != 1000000001 )
{
if( (*it1) != -1 && (*it2) != 1000000001 )
{
scade( x - (*it1) );
scade( (*it2) - x );
mip[ (*it2) - (*it1) ]++;
}
else if( (*it1) == -1 )
{
scade( (*it2) - x );
}
else
{
scade( x - (*it1) );
}
}
sit.erase( x );
}
else
{
fout<<-1<<'\n';
}
}
else if( s[ 0 ] == 'C' )
{
fin>>x;
if( sit.find( x ) == sit.end() )
fout<<0<<'\n';
else
fout<<1<<'\n';
}
else if( s[ 1 ] == 'I' )
{
if( sit.size() >= 2 )
fout<<( (*mip.begin()).f )<<'\n';
else
fout<<-1<<'\n';
}
else
{
if( sit.size() >= 2 )
{
it = sit.begin();
it++;
x = (*it);
it = sit.find( 1000000001 );
it--;
x = (*it) - x;
fout<<x<<'\n';
}
else
fout<<-1<<'\n';
}
}
return 0;
}