Cod sursa(job #903064)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 1 martie 2013 18:19:44
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <cstdio>
#include <cstring>
#include <cassert>

#include <fstream>
#include <algorithm>
#include <vector>
#include <string>
#include <queue>
#include <map>

using namespace std;

typedef long long LL;
typedef vector<int>::iterator it;

const int oo = 0x3f3f3f3f;
const int U = 666013;

vector<int> H[U];

inline int Search(int X) {
    int Key = X % U;
    for (it Y = H[Key].begin(); Y != H[Key].end(); ++Y)
        if (*Y == X)
            return 1;
    return 0;
}

inline void Insert(int X) {
    int Key = X % U;
    if (!Search(X))
        H[Key].push_back(X);
}

inline void Erase(int X) {
    int Key = X % U;
    for (it Y = H[Key].begin(); Y != H[Key].end(); ++Y) {
        if (*Y == X) {
            H[Key].erase(Y);
            return;
        }
    }
}

int main() {
    assert(freopen("hashuri.in", "r", stdin));
    assert(freopen("hashuri.out", "w", stdout));
    int N; assert(scanf("%d", &N) == 1);
    for (; N > 0; --N) {
        int Type, X; assert(scanf("%d %d", &Type, &X) == 2);
        if (Type == 1)
            Insert(X);
        if (Type == 2)
            Erase(X);
        if (Type == 3)
            printf("%d\n", Search(X));
    }
    return 0;
}