Cod sursa(job #1617972)

Utilizator BrandonChris Luntraru Brandon Data 27 februarie 2016 17:25:14
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>
#include <vector>

#define MOD 666013
using namespace std;

ifstream cin("hashuri.in");
ofstream cout("hashuri.out");

vector <int> hs[MOD + 5];

int val, n;

vector <int> :: iterator find_val(int val) {
    int val_mod = val % MOD;

    for(int i = 0; i < (int) hs[val_mod].size(); ++i) {
        if(hs[val_mod][i] == val) {
            return hs[val_mod].begin() + i;
        }
    }

    return hs[val_mod].end();
}

void ins_val(int val) {
    int val_mod = val % MOD;

    if(find_val(val) == hs[val_mod].end()) {
        hs[val_mod].push_back(val);
    }
}

void del_val(int val) {
    int val_mod = val % MOD;
    vector <int> :: iterator curr_it = find_val(val);

    if(curr_it != hs[val_mod].end()) {
        hs[val_mod].erase(curr_it);
    }
}

int main() {
    cin >> n;

    for(int i = 1; i <= n; ++i) {
        int op, val;
        cin >> op >> val;

        if(op == 1) {
            ins_val(val);
        }
        else if(op == 2) {
            del_val(val);
        }
        else if(op == 3) {
            cout << (find_val(val) != hs[val % MOD].end()) << '\n';
        }
    }
    return 0;
}