Cod sursa(job #2292648)

Utilizator cameliapatileaPatilea Catalina Camelia cameliapatilea Data 29 noiembrie 2018 19:33:21
Problema Hashuri Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.52 kb
#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;
}