Pagini recente » Cod sursa (job #2417877) | Cod sursa (job #1812608) | Cod sursa (job #2243545) | Cod sursa (job #1585530) | Cod sursa (job #329811)
Cod sursa(job #329811)
#include <cstdio>
#include <vector>
using namespace std;
const int prim = 666013;
vector<int> hash[prim];
void add( int );
void remove( int );
bool find( int );
int main()
{
freopen( "hashuri.in", "r", stdin );
freopen( "hashuri.out", "w", stdout );
int n, op, no;
scanf( "%d", &n );
for ( int i = 1; i <= n; ++i )
{
scanf( "%d%d", &op, &no );
if ( op == 1 )
add( no );
else if ( op == 2 )
remove( no );
else
printf( "%d\n", find( no ) );
}
}
void add( int no )
{
vector<int>::iterator it = hash[no%prim].begin(), end = hash[no%prim].end();
for ( ; it != end; ++it )
if ( *it == no )
return;
hash[no%prim].push_back( no );
}
void remove( int no )
{
vector<int>::iterator it = hash[no%prim].begin(), end = hash[no%prim].end();
for ( ; it != end; ++it )
if ( *it == no )
{
*it = hash[no%prim].back();
hash[no%prim].pop_back();
return;
}
}
bool find( int no )
{
vector<int>::iterator it = hash[no%prim].begin(), end = hash[no%prim].end();
for ( ; it != end; ++it)
if ( *it == no )
return 1;
return 0;
}