Cod sursa(job #2403296)

Utilizator bilghinIsleam Bilghin bilghin Data 11 aprilie 2019 13:48:55
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.32 kb
#include <bits/stdc++.h>

using namespace std;

FILE* si=fopen("hashuri.in","r");
FILE* so=fopen("hashuri.out","w");

struct hashuri
{
    vector<int> elem;
} v[666019];

int hashh (int val)
{
    int nr=0;
    while(val)
    {
        nr=nr*5+val%10;
        nr%=666019;
        val/=10;
    }
    return nr;
}
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);
}
void del(int nr)
{
    int hashval=hashh(nr);
    int pos=findd(hashval,nr);
    if(pos!=-1)
    {
        v[hashval].elem.erase(v[hashval].elem.begin()+pos);
    }
}

int main()
{

    int n,i,x,o,aux;

    fscanf(si,"%d",&n);
    for(i=0; i<n; i++)
    {
        fscanf(si,"%d%d",&o,&x);
        if(o==1)
        {
            adauga(x);
        }
        else if(o==2)
        {
            del(x);
        }
        else
        {
            aux=findd(hashh(x),x);
            if(aux==-1)
            {
                fprintf(so,"0\n");
            }
            else
            {
                fprintf(so,"1\n");
            }
        }
    }

    fclose(si);
    fclose(so);

    return 0;
}