Cod sursa(job #808457)

Utilizator krissu93FMI Tiugan Cristiana Elena krissu93 Data 6 noiembrie 2012 19:53:09
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;

#define mod 666013
struct nod
{ 	long long info;
	nod *urm;
} *lista[mod];

ifstream in("hashuri.in");
ofstream out("hashuri.out");
int n;

void insert (long long x)
{
	long long k=x%mod; 
	nod *q;
	int ok=1;
	for ( q=lista[k];q&&ok;q=q->urm)
		if (q->info == x) 
			ok=0;
	if (ok)
	{
	nod *p= new nod;
	p ->info=x;
	p->urm=lista[k];
	lista[k]=p;
	}
}
int find (long long  x)
{
	long k=x%mod;
	nod *p;
	for (p=lista[k];p;p=p->urm)
		if (p->info == x) return 1;
	return 0;
}
void deletes (long long x)
{	nod *p; nod *q;
 long k=x%mod;
 p=lista[k];
 if (p)
 {
	 if (p->info==x) 
	 {	lista[k]=p->urm;
		 delete p;
	 }
	 else
	 {
		 while (p->urm && p->urm->info !=x)
			 p=p->urm;
		 if (p->urm)
		 {
			 q=p->urm;
			 p->urm=q->urm;
			 delete q;
		 }
	 }
 }
}

int main()
{ int op,i;
long long x;
in>>n;
for (i=0;i<mod; i++) lista[i]=NULL;
while (n--)
{
	in>>op>>x;
	if (op==1)
	{
		insert(x);
	}
	else
	if (op==2)
	{
		deletes(x);
	}
	else
	if (op==3)
		out<<find(x)<<endl;
}
return 0;
}