Cod sursa(job #2196032)

Utilizator adriangh3Adrian Gheorghiu adriangh3 Data 18 aprilie 2018 09:08:14
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream in("hashuri.in");
ofstream out("hashuri.out");
#define BIGPRIME 100000

class hashtable
{
public:
    void add(int nr);
    void del(int nr);
    bool findn(int nr);
private:
    int HASH(int nr);
    vector <int> v[BIGPRIME];
};

int hashtable::HASH(int nr)
{
    return nr%BIGPRIME;
}

void hashtable::add(int nr)
{
    int location=HASH(nr), length=v[location].size(), i;
    for(i=0;i<length;i++)
    {
        if(v[location][i]==nr)
        {
            break;
        }
    }
    if(i==length) v[location].push_back(nr);
}

void hashtable::del(int nr)
{
    int location=HASH(nr), length= v[location].size();
    for(int i=0;i<length;i++)
    {
        if(v[location][i]==nr)
        {
            v[location].erase(v[location].begin()+i);
        }
    }
}

bool hashtable::findn(int nr)
{
    int location=HASH(nr),length=  v[location].size();
    for(int i=0;i<length;i++)
    {
        if(v[location][i]==nr)
        {
            return 1;
        }
    }
    return 0;
}

int main()
{
    int n, op, nr;
    hashtable H;
    in>>n;
    for(int i=0;i<n;i++)
    {
        in>>op>>nr;
        switch(op)
        {
        case 1:
            H.add(nr);
            break;
        case 2:
            H.del(nr);
            break;
        case 3:
            out<<H.findn(nr)<<'\n';
            break;
        }
    }
    return 0;
}