Cod sursa(job #766790)

Utilizator iris88Nagy Aliz iris88 Data 12 iulie 2012 11:09:02
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <iostream>
#include <fstream>
#include <vector>
#define dim 1300021
int table[dim];
int hash(int key,int i)
{
	return (key+3*i+5*i*i)%dim;
}
int insert(int key)
{
	for (int i=0;i<dim;i++)
	{
		int ind = hash(key,i);
		if (table[ind]<0)
		{
			table[ind] = key;
			return ind;
		}
	}
	return -1;
}
int search(int key)
{
	for (int i=0;i<dim;i++)
	{
		int ind = hash(key,i);
		if (table[ind]==-1)
			return -1;
		else
			if (table[ind]==key)
				return ind;			
	}
	return -1;
}
void sterge(int key)
{
	int ind = search(key);
	if (ind!=-1)
		table[ind] = -2;
}
using namespace std;
int main()
{
	FILE *f = fopen("hashuri.in","r");
	FILE *g = fopen("hashuri.out","w+");
	int n;
	fscanf(f,"%d",&n);
	for (int i=0;i<dim;i++)
		table[i]=-1;
	for (int i=0;i<n;i++)
	{
		int op,x;
		fscanf(f,"%d", &op);
		fscanf(f,"%d", &x);
		switch (op)
		{
			case 1:
			{
				insert(x);
				break;
			}				
			case 2:
			{				
				sterge(x);
				break;
			}				
			case 3:
			{
				int ind = search(x);
				if (ind<0)
					fprintf(g,"%d\n",0);
				else 
					fprintf(g,"%d\n",1);
				   break;
			}				
			default:
				break;
		}
	}
	fclose(g);
	fclose(f);
}