Cod sursa(job #1041672)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 25 noiembrie 2013 23:35:19
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <stdio.h>
#include <vector>

using namespace std;

FILE *f,*s;

long int n;

vector <int> v[666013];

vector <int> :: iterator Find( int k )
{
	vector <int> :: iterator it;
	
	int mod = k%666013;
	
	for (it = v[mod].begin(); it != v[mod].end() ; it++ )
	{
		if ( *it == k )
			return it;
	}
	
	return v[mod].end();
}

void Insert ( int k )
{
	if ( Find(k) == v[k%666023].end() )
		v[k % 666013].push_back(k);
}

void Erase ( int k )
{
	vector <int> :: iterator it = Find(k);
	
	if ( it != v[k%666013].end() )
		v[k%666013].erase(it);
}

int main()
{
	f=fopen("hashuri.in","r");
	s=fopen("hashuri.out","w");
	
	fscanf(f,"%ld",&n);
	
	for(int i=1; i<=n; i++)
	{
		long int a,b;
		
		fscanf(f,"%ld %ld",&a,&b);
		
		switch (a)
		{
			case 1: Insert(b); break;
			case 2: Erase(b); break;
			case 3: 
			{
				if (Find(b) != v[b%666013].end() ) 
					fprintf(s,"1\n");
				else
					fprintf(s,"0\n");
				
				break;
			}	
		}
	}
	
	
	fclose(s);
	
	return 0;
}