Pagini recente » Cod sursa (job #1838095) | Cod sursa (job #284023) | Cod sursa (job #1068486) | Cod sursa (job #2804271) | Cod sursa (job #1190390)
#include <stdio.h>
#define MOD 1914354
#define N_MAX 1000000
typedef struct{
int nr, next, prev;
}hash;
hash h[ N_MAX + 1 ];
int ult[ MOD ], dr = 1;
int caut ( int x ){
int poz = ult[ x % MOD ];
while ( poz > 0 && h[ poz ] . nr != x ){
poz = h[ poz ] . next;
}
if ( poz == 0 ) return -1;
return poz;
}
int main()
{
FILE *in = fopen ( "hashuri.in", "r" );
FILE *out = fopen ( "hashuri.out", "w" );
int n;
fscanf ( in, "%d", &n );
int i, tip, x, poz;
for ( i = 0; i < n; i++ ){
fscanf ( in, "%d%d", &tip, &x );
if ( tip == 1 ){
poz = caut ( x );
if ( poz == -1 ){
h[ dr ] . nr = x;
h[ dr ] . next = ult[ x % MOD ];
h[ h[ dr ] . next ] . prev = dr;
ult[ x % MOD ] = dr;
dr++;
}
}
else if ( tip == 2 ){
poz = caut ( x );
if ( poz != -1 ){
if ( ult[ x % MOD ] == poz ) ult[ x % MOD ] = h[ poz ] . next;
h[ h[ poz ] . prev ] . next = h[ poz ] . next;
h[ h[ poz ] . next ] . prev = h[ poz ] . prev;
}
}
else{
poz = caut ( x );
if ( poz == -1 ) fprintf ( out, "0\n" );
else fprintf ( out, "1\n" );
}
}
fclose ( in );
fclose ( out );
return 0;
}