Nu aveti permisiuni pentru a descarca fisierul grader_test18.in
Cod sursa(job #239580)
Utilizator | Data | 4 ianuarie 2009 23:39:40 | |
---|---|---|---|
Problema | Hashuri | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.09 kb |
#include <stdio.h>
#define MOD1 1235781
#define MOD2 1100781
#define MOD3 1036181
#define MOD4 336081
#define MOD5 136181
#define MOD6 36081
unsigned h1[MOD1];
unsigned h2[MOD2];
unsigned h3[MOD3];
unsigned h4[MOD4];
unsigned h5[MOD5];
unsigned h6[MOD6];
#define x1 h1[((x*2)%MOD1)]
#define x2 h2[((x*3)%MOD2)]
#define x3 h3[((x*5)%MOD3)]
#define x4 h4[((x*7)%MOD4)]
#define x5 h5[((x*2)%MOD5)]
#define x6 h6[((x*3)%MOD6)]
unsigned ok(unsigned x)
{
if ((x1 > 0) && (x2 > 0) && (x3 > 0) && (x4 > 0) && (x5 > 0) && (x6 > 0)) return 1;
return 0;
}
void add(unsigned x)
{
if ((x1 != 0) && (x2 != 0) && (x3 != 0) && (x4 != 0) && (x5 != 0) && (x6 != 0)) return;
++x1; ++x2; ++x3; ++x4; ++x5; ++x6;
}
void del(unsigned x)
{
if (!ok(x)) return;
--x1; --x2; --x3; --x4; --x5; --x6;
}
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
unsigned t,op,nr;
scanf("%u", &t);
while (t--)
{
scanf("%u%u",&op,&nr);
if (op == 1) add(nr); else
if (op == 2) del(nr); else
printf("%u\n", ok(nr));
}
return 0;
}