Cod sursa(job #2744915)

Utilizator DenisTroacaDenis Troaca DenisTroaca Data 25 aprilie 2021 15:36:03
Problema Hashuri Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.41 kb
#include <fstream>
#include<bits/stdc++.h>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
class Hash_table{
    int nr;
    list<int> *table;
public:
    Hash_table(int);
 
    int hash_fuction(int);
 
    void adauga(int);
    void sterge(int);
    bool exista(int);
};
 
Hash_table::Hash_table(int i){
    this->nr=i;
    table=new list<int> [i];
}
int Hash_table::hash_fuction(int x){
    return x%nr;
}
void Hash_table::adauga(int x){
    int i;
    i=hash_fuction(x);
    table[i].push_back(x);
}
void Hash_table::sterge(int x){
    int i;
    i=hash_fuction(x);
    list<int>::iterator j;
    for(j=table[i].begin();j!=table[i].end();j++){
        if(*j==x)
            break;
    }
    if(j!=table[i].end())
        table[i].erase(j);
 
}
bool Hash_table::exista(int x){
    int i;
    i=hash_fuction(x);
    list<int>::iterator j;
    for(j=table[i].begin();j!=table[i].end();j++){
        if(*j==x)
            break;
    }
    return (j!=table[i].end());
 
}
 
int n,p,x;
int main(){
    Hash_table h(100003);
    fin>>n;
    for(int i=0;i<n;i++){
        fin>>p>>x;
        if(p==1)
            if(h.exista(x)==0)
                h.adauga(x);
        if(p==2)
            h.sterge(x);
        if(p==3){
            if(h.exista(x))
                fout<<1<<'\n';
            else
                fout<<0<<'\n';
        }
 
    }
 
}