Cod sursa(job #2748165)

Utilizator mirunavrAvram Miruna-Alexandra mirunavr Data 29 aprilie 2021 23:03:47
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.46 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
int n,i,operatie,x;
struct HashMap{
    vector<vector<pair<int,int>>> data;

    HashMap(int cap):data(cap){

    }
    int hash_value(int val){
        return val%666013;
    }
    bool insertv(int key,int value){
        int poz=hash_value(key);
        for(int i=0;i< data[poz].size();++i)
        {
            if(key==data[poz][i].first) {
                data[poz][i].second = value;
                return false;
            }
        }
        data[poz].emplace_back(key,value);
        return true;
    }
    bool eraseval(int key){
        int poz=hash_value(key);
        for(int i=0;i<data[poz].size();++i)
        {
            if( key==data[poz][i].first){
                data[poz].erase(data[poz].begin()+i);
                return true;
            }
        }
        return false;
    }
    int get(int key){
        int poz=hash_value(key);
        for(int i=0;i<data[poz].size();++i){
            if( key==data[poz][i].first){
                return data[poz][i].second;
            }
        }
        return 0;
        }
};
int main ()
{
    HashMap hs(1000001);
    f>>n;
    for(i=0;i<n;i++)
    {
        f>>operatie>>x;
        if(operatie==1)
            hs.insertv(x,1);
        else if(operatie==2)
            hs.eraseval(x);
        else
            g<<hs.get(x)<<'\n';
    }


    return 0;
}