Cod sursa(job #2623411)

Utilizator antonioganea3Antonio Ganea antonioganea3 Data 3 iunie 2020 09:32:54
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.53 kb
#include <iostream>
#include <vector>
using namespace std;

FILE * fin, * fout;

inline int hhash( int value ){
    return value % 666013;
}

std::vector<int> HASHMAP[666015];

inline vector<int>::iterator find_value(int x){
    int bucket = hhash(x);
    vector<int>::iterator it;
    for (it = HASHMAP[bucket].begin(); it != HASHMAP[bucket].end(); ++it)
        if (*it == x)
            return it;
    return HASHMAP[bucket].end();
}

inline void insert_value(int x){
    int bucket = hhash(x);
    if (find_value(x) == HASHMAP[bucket].end())
        HASHMAP[bucket].push_back(x);
}

inline void erase_value(int x){
    int bucket = hhash(x);
    vector<int>::iterator it = find_value(x);
    if (it != HASHMAP[bucket].end())
        HASHMAP[bucket].erase(it);
}
int main(){
    fin = fopen("hashuri.in","r");
    fout = fopen("hashuri.out","w");

    int N;

    fscanf(fin,"%d",&N);

    int op;
    int num;
    for ( int i = 0; i < N; i++ ){
        fscanf(fin,"%d%d",&op,&num);
        switch(op){
            case 1:{
                insert_value(num);
                break;
            }
            case 2:{
                erase_value(num);
                break;
            }
            case 3:{
                if ( HASHMAP[hhash(num)].end() == find_value(num) ){
                    fprintf(fout,"0\n");
                } else {
                    fprintf(fout,"1\n");
                }
                break;
            }
        }
    }

    fclose(fin);
    fclose(fout);
}