Cod sursa(job #641708)

Utilizator marius135Dumitran Adrian Marius marius135 Data 29 noiembrie 2011 11:11:47
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 2.77 kb
// proiect.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"
#include<iostream>
#include<stdio.h>
#include<vector>
#define prime 1000151
using namespace std;

vector <int> my_hash[prime];

int cauta( int b)
{	
	int rest = b % prime;
	int nr_el = my_hash[rest].size();
	for( int i = 0; i < nr_el; ++i)
		if(my_hash[rest][i] == b ) return 1;
	return 0;
}
void sterge( int b)
{
	int rest = b % prime;
	int nr_el = my_hash[rest].size();
	for( int i = 0; i < nr_el; ++i)
		if(my_hash[rest][i] == b ) {
			my_hash[rest][i] = my_hash[rest].back();
			my_hash[rest].pop_back();
		}
	
}
int main()
{	
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	int n;
	scanf("%d", &n);
	for( int i = 1; i <= n; ++i)
	{
		int a, b;
		scanf("%d %d", &a, &b);
		if( a == 3) 
			printf("%d\n", cauta(b));
		if( a == 1)
			if( cauta(b) == 0 )
				my_hash[b%prime].push_back(b);
		if( a == 2)
			sterge(b);
	}

	return 0;
}

/*#include<iostream>
#include<stdio.h>
#include<string.h>
#include<conio.h>

using namespace std;


 
    int i,lung_subsir;
	char sir[256],subsir[256]="Microsoft",*p;
	char rezultat[256];
	char adaos[]="Corel";

FILE *v;
int deschidere()
{ //if( (*v = fopen_s(&sir,"text.txt","r")) == NULL )
	//	{  printf( "Eroare" ); return 0;}
	freopen("text.txt","r",stdin);
	printf( "Fisierul a fost deschis" );
}	 


void meniu()
{    clrscr();
     cout<<"\n\n\n\t\t\tProiect Programare Procedurala";
     cout<<"\n\n\n";
     cout<<"\n\n\n\t\t\t1. Inlocuirea tuturor aparitiilor unui cuvant dat cu altul intr-un fisier";
     cout<<"\n\n\t\t\t2. CMMDC a 'n' numere";
     cout<<"\n\n\t\t\t3. Liste";
     cout<<"\n\n\t\t\t4. Vectori";
     cout<<"\n\n\t\t\t5. Pointeri";

cout<<"\n\n\n ALEGETI 1, 2, 3, 4 sau 5. Oricare alta alegere conduce la inchiderea programului\n ";
}

int sem (char *s, char c[256])
{	int l,L;

	l=strlen(s);
	L=strlen(c);

	if(l<L)return 0;
 
	for( i = 0; i < L; ++i)
		if( s[ i ] != c[ i ] ) return 0;
	return 1;
}

   //Problema fisier;

 void inlocuire()
{  

	int lung_rez = 0;
	 
	for(i=0;i<strlen(sir);i++)
	{	
		if( sem( sir + i, subsir) == 1)
		{
			strcat(rezultat, adaos);
			i = i + strlen(subsir) - 1;  
			lung_rez += strlen( adaos);
			continue;
		}
		rezultat[ lung_rez++ ] = sir[ i ]; // pune caracterul i din sir in rezultat 
		

	}
      
}
	
int main()

{   // Meniul programului;

    int aleg,i,continua=1;
    
    do{ meniu();
    cin>>aleg;
    switch(aleg)
     {case 1:inlocuire();break;
      case 2:cmmdc();break;
      case 3:test();break;
      case 4:test();break;
      case 5:test();break;
      default: continua=0;
     }
   }while(continua==1);
   //getch();
   return 1;


}
*/