Cod sursa(job #644404)

Utilizator marinMari n marin Data 6 decembrie 2011 13:40:25
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <stdio.h>
#define H 1000000

struct nod {
	int inf;
	nod *adr;
};

nod *P[H], *p, *q, *r;
int N, i, x, y, j;

int main() {
	FILE *f = fopen("hashuri.in","r");
	FILE *g = fopen("hashuri.out","w");
	
	fscanf(f,"%d",&N);
	
	for (i=1;i<=N;i++) {
		fscanf(f,"%d %d",&x, &y);
		if (x == 1) {
			q = P[y%H];
			while (q!=NULL && q->inf != y) {
				q = q->adr;
			}
			if (q == NULL) {
				q = new nod;
				q -> inf = y;
				q -> adr = P[y%H];
				P[y%H] = q;
				
			}
		} else if (x == 2) {
			if (P[y%H] == NULL)
				continue;
			if (P[y%H]->inf == y) {
				q = P[y%H];
				P[y%H] = P[y%H]->adr;
				delete q;
			} else {
				q = P[y%H];
				while (q->adr != NULL && q->adr->inf != y){
						q = q->adr;
				}
				if (q->adr != NULL) {
					r = q->adr;
					q->adr = q->adr->adr;
					delete r;
				}
			}
		} else if (x == 3) {
			q = P[y%H];
			while (q!=NULL && q->inf != y) {
				q = q->adr;
			}
			if (q == NULL)
				fprintf(g,"%d\n",0);
			else
				fprintf(g,"%d\n",1);
		}
	}
	
	
	
	fclose(f);
	fclose(g);
	
	return 0;
}