Cod sursa(job #2886697)

Utilizator Mihai_EduardMihai Eduard Mihai_Eduard Data 8 aprilie 2022 02:35:02
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
const int mod=666013;

///consideram functia de hash H(x)=x modulo P si vom retine P liste simplu inlantuite
///indexate de la 0 la P-1, unde lista i va retine toate acele chei x din multime
///care au H(x)=i, sau, altfel spus, toate numerele din multime care dau restul i la
///impartirea cu P
int N;
vector<int> g[mod];

void insertHash(int val){
    int lista=val%mod;
    for(auto x: g[lista]){
        if(x==val)
            return;
    }
    g[lista].push_back(val);
}

void eraseHash(int val){
    int lista=val%mod;
    for(auto it=g[lista].begin();it!=g[lista].end();it++){
        if(*it==val){
            g[lista].erase(it);
            return;
        }
    }
}

bool findValue(int val){
    int lista=val%mod;
    for(auto x: g[lista]){
        if(x==val)
            return 1;
    }
    return 0;
}

int main()
{
    fin>>N;
    int tip, x;
    while(N--){
        fin>>tip>>x;
        if(tip==1){
            insertHash(x);
        }
        else if(tip==2){
            eraseHash(x);
        }
        else{
            fout<<findValue(x)<<'\n';
        }
    }

    fin.close();
    fout.close();
    return 0;
}