Cod sursa(job #632145)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 10 noiembrie 2011 14:08:04
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <stdio.h>
#include <stdlib.h>

struct point {
	int inf;
	point *leg;
};
point *h[676014];
long n,op,nr,x,n1,y,i;

long cautare(point *p, int nr) {
	int ok;
	ok=0;
	while (p!=NULL) {
		if (p->inf==nr) {
			ok=1;
			break;
		}
		p=p->leg;
	}
	return ok;
}

void inserare(long x, long nr) {
	point *p;
	p=new point;
	p->inf=nr;
	p->leg=h[x];
	h[x]=p;;
}

void stergere(long x,long nr) {
	point *p,*u;
	int ok;
	ok=0;
	p=h[x];
	u=NULL;
	while (p!=NULL) {
		if (p->inf==nr) {
			ok=1;
			break;
		}
		u=p;
		p=p->leg;
	}
	if (ok) {
		if (u!=NULL) {
			p=u->leg->leg;
			u->leg=p;
		}
		else h[x]=p->leg;
	}
}


int main () {
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	scanf("%ld",&n);
	n1=676013;
	for (i=1; i<=n; i++) {
		scanf("%ld%ld",&op,&nr);
		x=nr%n1;
		if (op==1)
			if (cautare(h[x],nr)==0) inserare(x,nr);
		if (op==2)
			if (cautare(h[x],nr)==1) stergere(x,nr);
		if (op==3) {
			y=cautare(h[x],nr);
			printf("%d\n",y);
		}
	}
	return 0;
}