Pagini recente » Borderou de evaluare (job #2653623) | Borderou de evaluare (job #949969) | Cod sursa (job #568356) | Cod sursa (job #440535) | Cod sursa (job #568297)
Cod sursa(job #568297)
#include<fstream>
using namespace std;
const int filter_size = 6000000;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
long long 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[0] = 333333;
mod[1] = 997, mod[2] = 45097 ,
mod[3] = 999017 , mod[4] = 2750159 , mod[5] = 5421751 , mod[6] = 7;
for( i = 1 ; i <= n ; ++i ) {
fin >> type >> nr;
if ( type == 1 )
if ( query(nr) == 0 )
insert(nr);
if ( type == 2 )
if ( query(nr) == 1)
erase(nr);
if ( type == 3 )
fout << query(nr) <<"\n";
}
return 0;
}