Cod sursa(job #2403284)

Utilizator Dragono63Stanciu Rares Stefan Dragono63 Data 11 aprilie 2019 13:38:17
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.56 kb
#include<bits/stdc++.h>
using namespace std;

struct hashuri
{
    vector<int> elem;
} v[666019];
int hashh (int val)
{
    int nr=0;
    while (val)
    {
        nr=nr*5+val%10;
        nr=nr%666013;
        val/=10;
    }
    return nr;
}
/**
la v[i] tineti elementele cu hashul egal cu i
*/
int findd (int hashval,int nr)
{
    for (int i=0; i<v[hashval].elem.size(); ++i)
    {
        if(v[hashval].elem[i]==nr) return i;
    }
    return -1;
}
int adauga (int nr)
{
    int pos=findd(hashh(nr),nr);
    if(pos==-1) {v[hashh(nr)].elem.push_back(nr);}
    ///verifica daca la adresa din vector a hashului lui nr se afla nr
}
void del (int nr)
{
    int pos=findd(hashh(nr),nr),hashval=hashh(nr);
    if(pos!=-1)
    {
        v[hashval].elem.erase(v[hashval].elem.begin()+pos);
    }
}

int main()
{

    ifstream fin("hashuri.in");
    ofstream fout("hashuri.out");

    int n,o,x;

    fin>>n;
    for(int i=0; i<n; i++)
    {
        fin>>o>>x;
        if(o==1)
        {
            adauga(x);
        }
        else
        {
            if(o==2)
            {
                del(x);
            }
            else
            {
                if(o==3)
                {
                    int pos=findd(hashh(x),x);
                    if(pos!=-1)
                    {
                        fout<<"1"<<"\n";
                    }
                    else
                    {
                        fout<<"0\n";
                    }
                }
            }
        }
    }
    return 0;
}