Pagini recente » Cod sursa (job #1147514) | Cod sursa (job #587771) | Cod sursa (job #1438) | Cod sursa (job #1164744) | Cod sursa (job #2727331)
#include <stdio.h>
#include <ctype.h>
#include <vector>
#define NMAX 1000000
#define MOD 666013
using namespace std;
FILE *fin;
int v[NMAX];
vector <int> myHash[MOD];
void adauga( int x ) {
int cod, i;
cod = x % MOD;
i = 0;
while ( i < myHash[cod].size() && myHash[cod][i] != x )
i++;
if ( i == myHash[cod].size() )
myHash[cod].push_back( x );
}
void sterge( int x ) {
int cod, i;
cod = x % MOD;
i = 0;
while ( i < myHash[cod].size() && myHash[cod][i] != x )
i++;
if ( i < myHash[cod].size() )
myHash[cod].erase( myHash[cod].begin() + i );
}
bool cauta( int x ) {
int cod, i;
cod = x % MOD;
i = 0;
while ( i < myHash[cod].size() && myHash[cod][i] != x )
i++;
return i < myHash[cod].size();
}
int getNum() {
int n;
char ch;
ch = fgetc( fin );
while ( !isdigit( ch ) )
ch = fgetc( fin );
n = 0;
while ( isdigit( ch ) ) {
n = n * 10 + ch - '0';
ch = fgetc( fin );
}
return n;
}
int main() {
FILE *fout;
int n, tip, x, i;
fin = fopen( "hashuri.in", "r" );
fout = fopen( "hashuri.out", "w" );
fscanf( fin, "%d", &n );
for ( i = 0; i < n; i++ ) {
tip = getNum();
x = getNum();
if ( tip == 1 )
adauga( x );
else if ( tip == 2 )
sterge( x );
else
fprintf( fout, "%d\n", cauta( x ) );
}
fclose( fin );
fclose( fout );
return 0;
}