Cod sursa(job #783507)

Utilizator adascaluAlexandru Dascalu adascalu Data 3 septembrie 2012 01:44:20
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<cstdio>
#include<vector>
#define PRIM 699997
#define nat unsigned int
using namespace std;
vector<nat> v[PRIM];
vector<nat>::iterator search(nat x)
{
	nat list=x%PRIM;
	for(vector<nat>::iterator it=v[list].begin();it!=v[list].end();it++)
		if(*it==x)
			return it;
	return v[list].end();
}
void add(nat x)
{
	if(search(x)==v[x%PRIM].end())
		v[x%PRIM].push_back(x);
	else return;
}
void erase_hash(nat x)
{
	nat list=x%PRIM;
	if(v[list].empty())
		return ;
	else
		for(vector<nat>::iterator it=v[list].begin();it!=v[list].end();it++)
			if(*it==x)
			{
				v[list].erase(it);
				return;
			}
	return;		
			
}
int main ()
{
	nat n,x,op;
	FILE *f=fopen("hashuri.in","r");
	FILE *g=fopen("hashuri.out","w");
	fscanf(f,"%u",&n);
	for(nat i=1;i<=n;i++)
	{
		fscanf(f,"%u%u",&op ,&x);
		if(op==1)
			add(x);
		else
			if(op==2)
				erase_hash(x);
			else
				if(search(x)==v[x%PRIM].end())
					fprintf(g,"%s\n","0");
				else
					fprintf(g,"%s\n","1");
	}
	
	fclose(f);
	fclose(g);
	return 0;
}