Cod sursa(job #1106213)

Utilizator anaid96Nasue Diana anaid96 Data 12 februarie 2014 17:25:02
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include<stdio.h>
#include<vector>

using namespace std;

FILE *in,*out;

//definitii
#define pb push_back

//constante
const int modulo=666013;

//functii
void inserare (int val);
void stergere (int val);
int cautare (int val);

//variabile
int oper, tip,valoare;
vector<int> hash[modulo];

int main(void)
{
	in=fopen("hashuri.in","rt");
	out=fopen("hashuri.out","wt");
	
	fscanf(in,"%d",&oper);
	while(oper--)
	{
		fscanf(in,"%d%d",&tip,&valoare);
		if(tip==1)
			inserare(valoare);
		else
			if(tip==2)
				stergere(valoare);
			else
				fprintf(out,"%d\n",cautare(valoare));
	}	
}	

void inserare(int val)
{
	int pos=val%modulo;
	vector<int> :: iterator it,end=hash[pos].end();
	for(it=hash[pos].begin() ; it!=end ; ++it)
		if(*it==val)
			return;
	hash[pos].pb(val);	
}	

void stergere(int val)
{
	int pos=val%modulo;
	vector<int> :: iterator it,end=hash[pos].end();
	for(it=hash[pos].begin() ; it!=end ; ++it)
		if(*it==val)
		{	
			hash[pos].erase(it);
			return;
		}	
		
}	

int cautare(int val)
{
	int pos=val%modulo;
	vector<int> :: iterator it,end=hash[pos].end();
	for(it=hash[pos].begin() ; it!=end ; ++it)
		if(*it==val)
			return 1;
	return 0;	
}