Cod sursa(job #573171)

Utilizator Cristy94Buleandra Cristian Cristy94 Data 5 aprilie 2011 23:19:05
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<cstdio>
#include<vector>
#define M 999961
#define P 999979
#define Q 999983

using namespace std;

int N;
int m[M],p[P],q[Q];

void adauga(int x){
	
	int hashM=x%M;
	int hashP=x%P;
	int hashQ=x%Q;
	
	if(!(m[hashM] && p[hashP] && q[hashQ]))
		m[hashM]++,
		p[hashP]++,
		q[hashQ]++;
}

void sterge(int x){
	
	int hashM=x%M;
	int hashP=x%P;
	int hashQ=x%Q;
	
	if((m[hashM] && p[hashP] && q[hashQ]))
		m[hashM]--,
		p[hashP]--,
		q[hashQ]--;
}
int main(){

	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	
	scanf("%d",&N);
	
	for(int i=1;i<=N;++i){
		
		int tip,x;
		
		scanf("%d%d",&tip,&x);
		
		switch(tip){
			 case 1: adauga(x);
				     break;
		     case 2: sterge(x);
				     break;
			 case 3: 
				 int hashM=x%M;
				 int hashP=x%P;
	             int hashQ=x%Q;
				 printf("%d\n",(m[hashM] && p[hashP] && q[hashQ]));
		}
	}
	
return 0;
}