Pagini recente » Borderou de evaluare (job #305789) | Cod sursa (job #2306454) | Cod sursa (job #1970606) | Borderou de evaluare (job #2247019) | Cod sursa (job #568273)
Cod sursa(job #568273)
#include<fstream>
using namespace std;
const int filter_size = 6000000;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
int t = 4435427;
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] ++;
}
void erase (int val) {
int i;
for( i = 1 ; i <= 5 ; ++i )
filter[val % mod[i]]--;
filter[val xor t]--;
}
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] == 0)
return 0;
return 1;
}
int main()
{
fin >> n;
mod[1] = 479909, mod[2] = 1000003 ,
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;
}