Cod sursa(job #239574)

Utilizator crawlerPuni Andrei Paul crawler Data 4 ianuarie 2009 23:33:03
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <stdio.h>

#define MOD1 1235781
#define MOD2 1100781
#define MOD3 1336181
#define MOD4 336081
#define MOD5 136181
#define MOD6 36081


int h1[MOD1];
int h2[MOD2];
int h3[MOD3];
int h4[MOD4];
int h5[MOD5];
int h6[MOD6];

#define x1 ((x+1234511)%MOD1)
#define x2 ((x+2345678)%MOD2)
#define x3 ((x+9876549)%MOD3)
#define x4 ((x+1225478)%MOD4)
#define x5 ((x+8716549)%MOD5)
#define x6 ((x+5781241)%MOD6)

int ok(int x)
{
	if (h1[x1] > 0 && h2[x2] > 0 && h3[x3] > 0 && h4[x4] > 0 && h5[x5] > 0 && h6[x6] > 0) return 1;
	return 0;
}

void add(int x)
{
	if (h1[x1] != 0 && h2[x2] != 0 && h3[x3] != 0 && h4[x4] != 0 && h5[x5] != 0 && h6[x6] != 0) return;
	++h1[x1];	++h2[x2];	++h3[x3];	++h4[x4];	++h5[x5];	++h6[x6];
}

void del(int x)
{
	if (!ok(x)) return;
	--h1[x1];	--h2[x2];	--h3[x3];	--h4[x4];	--h5[x5];	--h6[x6];	
}

int main()
{
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);

	int t,op,nr;
	
	scanf("%d", &t);

	while (t--)
	{
		scanf("%d%d",&op,&nr);
		if (op == 1) add(nr); else
		if (op == 2) del(nr); else
		printf("%d\n", ok(nr));
	}
	
	return 0;
}