Cod sursa(job #1996134)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 30 iunie 2017 12:21:29
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <fstream>
#include <vector>
#define M 666013

using namespace std;

vector<int> v[666100];
int m;

int hsh(int x)
{
    double y = 0.618033;
    double xy = (double)x * y;
    xy -= (int) xy;
    double ans = xy * M;
    return (int) ans;
}

vector<int> :: iterator find_val(int x)
{
    int lst = hsh(x);
    for (vector<int> :: iterator it = v[lst].begin(); it != v[lst].end(); ++it)
        if(*it == x)
            return it;
    return v[lst].end();
}

void insert_val(int x)
{
    int lst = hsh(x);
    if(find_val(x) == v[lst].end())
        v[lst].push_back(x);
}

void erase_val (int x)
{
    int lst = hsh(x);
    vector<int>::iterator it = find_val(x);
    if(it != v[lst].end())
        v[lst].erase(it);
}

int main()
{
    ifstream fin ("hashuri.in");
    ofstream fout ("hashuri.out");
    fin >> m;
    while(m--){
        int test, x;
        fin >> test >> x;
        switch(test){
            case 1:
                insert_val(x);
                break;
            case 2:
                erase_val(x);
                break;
            case 3:
                fout << (find_val(x) != v[hsh(x)].end()) << "\n";
                break;
        }
    }
    fin.close();
    fout.close();
    return 0;
}