Cod sursa(job #1728327)

Utilizator xSliveSergiu xSlive Data 12 iulie 2016 18:47:26
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
#include <vector>
#include <iterator>
#define NMAX 66013
using namespace std;

inline vector<int>::iterator find_in(vector<int> *H,int value){
    int list = value % NMAX;
    vector<int>::iterator it;
    for(it=H[list].begin();it!=H[list].end();it++)
        if(*it == value)
            break;
    return it;
}

inline void add(vector<int> *H,int value){
    int list = value % NMAX;
    vector<int>::iterator it = find_in(H,value);
    if(it == H[list].end())
        H[list].push_back(value);
}

inline void delete_from(vector<int> *H,int value){
    vector<int>::iterator it  = find_in(H,value);
    int list = value % NMAX;
    if(it != H[list].end()){
        H[list].erase(it);
    }
}

inline int exista(vector<int> *H,int val){
    int list = val % NMAX;
    return find_in(H,val) != H[list].end();
}
int main()
{
    vector<int> H[NMAX];
    int nr,op,val;
    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
    f>>nr;
    for(int i=0;i<nr;i++){
        f >> op >> val;
        if(op == 1)
            add(H,val);
        else if(op == 2)
            delete_from(H,val);
        else g << exista(H,val) << "\n";
    }
    f.close();
    g.close();
    return 0;
}