Pagini recente » Cod sursa (job #2860899) | Cod sursa (job #1535590) | Cod sursa (job #1261644) | Cod sursa (job #148715) | Cod sursa (job #1112136)
#include <stdio.h>
#include <fstream>
#define a 4335
#define b 65464
#define modulo 666013
using namespace std;
ifstream in ( "hashuri.in" ) ;
struct node
{
unsigned int value;
node *next ;
};
struct hash_table
{
bool used ;
node *next ;
};
hash_table vect[modulo] ;
node *p ;
unsigned int x ;
int n , tip , i , y ;
void insert_hash ()
{
node *q ;
q = new node ; q->value = x ; q->next = NULL ;
if ( vect[y].used == 0 ) { vect[y].next = q ; vect[y].used = 1 ; }
else
{
p = vect[y].next ;
while ( p->next != NULL && p->value != x )
{
p = p->next ;
}
if ( p->value != x )
{
p->next = q ;
}
}
}
void delete_hash ()
{
if ( vect[y].used )
{
if ( vect[y].next->next == NULL )
{
vect[y].used = 0 ; vect[y].next = NULL ;
}
else
{
p = vect[y].next ;
while ( p->next->next != NULL )
{
p = p->next ;
}
p->next = NULL ;
}
}
}
void call_hash ()
{
if ( vect[y].used )
{
p = vect[y].next ;
while ( p->value != x && p->next != NULL )
{
p = p->next ;
}
if ( p->value == x ) { printf ( "1\n" ) ; }
else { printf ( "0\n" ) ; }
}
else
{
printf ( "0\n" ) ;
}
}
int function_hash ()
{
return ( ( a*x + b ) % modulo ) ;
}
int main()
{
freopen ( "hashuri.out" , "w" , stdout ) ;
in >> n ;
for ( i = 1 ; i <= n ; i ++ )
{
in >> tip >> x ;
y = function_hash() ;
if ( tip == 1 ) { insert_hash() ; }
else if ( tip == 2 ) { delete_hash() ; }
else { call_hash() ; }
}
return 0;
}