Pagini recente » Cod sursa (job #2789184) | Cod sursa (job #1154193) | Cod sursa (job #1115252) | Cod sursa (job #2493357) | Cod sursa (job #2506631)
#include <stdio.h>
#define P 666013
#define MAXN 1000000
#define NIL 0
int in[P], next[MAXN + 1], val[MAXN + 1];
int main() {
FILE *fin = fopen( "hashuri.in", "r" );
FILE *fout = fopen( "hashuri.out", "w" );
int n, i, op, x, nr, ant, num, k;
fscanf( fin, "%d", &n );
k = 1;
for ( i = 0; i < n; ++i ) {
fscanf( fin, "%d%d", &op, &x );
if ( in[x % P] == 0 ) {
in[x % P] = k;
++k;
}
switch( op ) {
case 1:
nr = num = in[x % P];
while ( nr != NIL && val[nr] != x ) {
nr = next[nr];
}
if ( nr == NIL ) {
in[x % P] = num + 1;
val[num + 1] = x;
next[num + 1] = next[num];
}
break;
case 2:
nr = in[x % P];
ant = NIL;
while ( nr != NIL && val[nr] != x ) {
ant = nr;
nr = next[nr];
}
if ( val[nr] == x && ant != NIL ) {
next[ant] = next[next[ant]];
} else if ( ant == NIL ) {
in[x % P] = next[nr];
}
break;
case 3:
nr = in[x % P];
while ( nr != NIL && val[nr] != x ) {
nr = next[nr];
}
if ( nr == NIL ) {
fprintf( fout, "0\n" );
} else {
fprintf( fout, "1\n" );
}
break;
}
}
fclose( fin );
fclose( fout );
return 0;
}