Pagini recente » Cod sursa (job #1034781) | Borderou de evaluare (job #1036885) | Cod sursa (job #1001568) | Cod sursa (job #1144649) | Cod sursa (job #2292648)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
vector<int> hash_table[100000];
ifstream f("hashuri.in");
ofstream g("hashuri.out");
void adauga_in_hash( int element)
{
int ok = 0;
int corespondenta = element % 663;
for(int i = 0; i < hash_table[corespondenta].size(); i++)
//daca am gasit deja elementul in hash, il marchez si nu il mai adaug
if(hash_table[corespondenta][i] == element)
ok = 1;
//daca elemntul nu a fost gasit deja, il adaug
if( ok == 0)
hash_table[corespondenta].push_back(element);
}
void sterge_din_hash(int element)
{
int corespondenta = element % 663;
int ok = 0;
for( int i = 0; i < hash_table[corespondenta].size(); i++)
{
//daca am gasit elementul , il marchez
if(hash_table[corespondenta][i] == element)
ok = 1;
//si ii schimb valoarea in -1 ca sa marchez ca a fost sters
hash_table[corespondenta][i] = -1;
}
}
int gaseste_element(int element)
{
int corespondenta = element % 663;
int ok = 0;
for(int i = 0; i< hash_table[corespondenta].size() && ok == 0; i++)
{
if( hash_table[corespondenta][i] == element)
ok = 1;
}
return ok;
}
int main()
{
int n, operatie, x;
f >> n;
for(int i = 1; i <= n; i++)
{
f >> operatie >> x;
if(operatie == 1)
adauga_in_hash(x);
if(operatie == 2)
sterge_din_hash(x);
if(operatie == 3)
g << gaseste_element(x) << '\n';
}
return 0;
}