Pagini recente » Cod sursa (job #1644599) | Cod sursa (job #1081975) | Cod sursa (job #815673) | Cod sursa (job #2251422) | Cod sursa (job #568305)
Cod sursa(job #568305)
#include<fstream>
using namespace std;
const int filter_size = 9000000;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
int t = 1774435427 , m = 8869863;
int i , j , n , mod[10] , type , nr;
int sep[10000];
char filter[filter_size];
void insert( int val ) {
int i;
for( i = 2 ; i <= 5 ; ++i )
filter[val % mod[i]]++;
filter[(val xor t) % m] ++;
sep[(val xor (t >> 1)) % 9007]++;
}
void erase (int val) {
int i;
for( i = 2 ; i <= 5 ; ++i )
filter[val % mod[i]]--;
filter[(val xor t) % m]--;
sep[(val xor (t >> 1)) % 9007]--;
}
int query( int val ) {
int i;
for( i = 2 ; i <= 5 ;++i )
if ( filter[val % mod[i]] <= 0 ) return 0;
if ( filter[(val xor t) % m] <= 0 || sep[(val xor (t >> 1)) % 9007] <=0)
return 0;
return 1;
}
int main()
{
fin >> n;
mod[0] = 333333;
mod[1] = 997, mod[2] = 450097 ,
mod[3] = 1999017 , mod[4] = 4750159 , mod[5] = 7421751 , 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;
}