Cod sursa(job #1165302)

Utilizator SRaduRadu Szasz SRadu Data 2 aprilie 2014 16:52:01
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

const int MAX = 666013;

int N;
vector<int> H[MAX];

int getHashKey(int Element) {
    return Element % MAX;
}

bool Find(int Element) {
    int Key = getHashKey(Element);
    for(size_t i = 0; i < H[Key].size(); i++) {
        if(H[Key][i] == Element)
            return true;
    } return false;
}

void Add(int Element) {
    int Key = getHashKey(Element);
    H[Key].push_back(Element);
}

void Delete(int Element) {
    int Key = getHashKey(Element);
    H[Key].erase(find(H[Key].begin(), H[Key].end(), Element));
}

int main() {
    ifstream in("hashuri.in"); ofstream out("hashuri.out");
    in >> N;
    for(int i = 1, op, X; i <= N; i++) {
        in >> op >> X;
        if(op == 1 && !Find(X)) {
            Add(X);
        } else if(op == 2 && Find(X)) {
            Delete(X);
        } else if(op == 3) {
            out << (Find(X) ? 1 : 0) << "\n";
        }
    } in.close(); out.close();
}