Cod sursa(job #239584)

Utilizator crawlerPuni Andrei Paul crawler Data 4 ianuarie 2009 23:44:17
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 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*29)%MOD1)]
#define x2 h2[((x*31)%MOD2)]
#define x3 h3[((x*51)%MOD3)]
#define x4 h4[((x*73)%MOD4)]
#define x5 h5[((x*23)%MOD5)]
#define x6 h6[((x*37)%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;
}