Cod sursa(job #2620689)

Utilizator ADRIAN.CATRINOIUAdrian Catrinoiu ADRIAN.CATRINOIU Data 29 mai 2020 14:50:21
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.48 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
const int mod=345643;//un numar prim pentru hash index
vector <int>vhash[mod];//un vector cu 345643 buckets(hash index-uri)
bool cautaElement(int x)
{
    int i,index=x%mod;//hash index-ul lui x(bucket-ul)
    for(i=0;i<vhash[index].size();i++)//parcurgem bucket-ul
    {
        if(vhash[index][i]==x)
            return 1;
    }
    return 0;
}
void adauga(int x)
{
    int index=x%mod;//hash index-ul lui x(bucket-ul)
    if(!cautaElement(x))
        vhash[index].push_back(x);//adaugam in bucket x

}
void sterge(int x)
{
    int i,index=x%mod;//hash index-ul lui x(bucket-ul)
    for(i=0;i<vhash[index].size();i++)//parcurgem bucket-ul
    {
        if(vhash[index][i]==x)//daca l-am gasit pe x in bucket-ul sau il stergem
        {
            //facem swap intre x si ultimul element din bucket ca sa il stergem pe x cu pop_back
            swap(vhash[index][i],vhash[index][vhash[index].size()-1]);
            vhash[index].pop_back();//il stergem pe x
            break;
        }
    }
}
int main()
{
    int n,operatie,x;
    fin>>n;
     for(int i=0;i<n;i++)
        {
            fin>>operatie>>x;
            if(operatie==1)
                adauga(x);
            if(operatie==2)
                if(cautaElement(x))
                    sterge(x);
            if(operatie==3)
                fout<<cautaElement(x)<<'\n';
        }
    return 0;
}