Pagini recente » Cod sursa (job #2345463) | Cod sursa (job #2061110) | Cod sursa (job #3261204) | Cod sursa (job #505167) | Cod sursa (job #568286)
Cod sursa(job #568286)
#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 = 0 ; i <= 6 ; ++i )
filter[val % mod[i]]++;
filter[(val xor t) % m] ++;
}
void erase (int val) {
int i;
for( i = 0 ; i <= 6 ; ++i )
filter[val % mod[i]]--;
filter[(val xor t) % m]--;
}
int query( int val ) {
int i;
for( i = 0 ; i <= 6 ;++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] = 3421751 , mod[6] = 3;
for( i = 1 ; i <= n ; ++i ) {
fin >> type >> nr;
if ( type == 1 )
if ( query(nr) == 0 )
insert(nr);
if ( type == 2 )
erase(nr);
if ( type == 3 )
fout << query(nr) <<"\n";
}
return 0;
}