Cod sursa(job #568275)

Utilizator lalasCont de teste lalas Data 30 martie 2011 23:51:22
Problema Hashuri Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<fstream>

using namespace std;
const int filter_size = 6000000;

ifstream fin("hashuri.in");
ofstream fout("hashuri.out");

int t = 4435427 , m = 4869863;
int i , j , n , mod[10] , type , nr;
short int filter[filter_size];

void insert( int val ) {
	int i;
	for( i = 1 ; i <= 5 ; ++i ) 
		filter[val % mod[i]]++;
	filter[(val xor t) % m] ++;
}

void erase (int val) {
	int i;
	for( i = 1 ; i <= 5 ; ++i )
		filter[val % mod[i]]--;
	filter[(val xor t) % m]--;
}

int query( int val ) {
	int i;
	for( i = 1 ; i <= 5 ;++i )
		if ( filter[val % mod[i]] == 0 ) return 0;
	if ( filter[(val xor t) % m] == 0)
		return 0;
return 1;
}

int main()
{
	fin >> n;
		
	mod[1] = 997, mod[2] = 45097 ,	
	mod[3] = 999017 , mod[4] = 2750159 , mod[5] = 3421751;
	
	for( i = 1 ; i <= n ; ++i ) {
		fin >> type >> nr;
		if ( type == 1 )
			insert(nr);
		if ( type == 2 ) 
			erase(nr);
		if ( type == 3 )
			fout << query(nr) <<"\n";
	}
	
return 0;
}