Cod sursa(job #1511654)

Utilizator andreea_zahariaAndreea Zaharia andreea_zaharia Data 26 octombrie 2015 23:34:05
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include<cstdio>
#include<vector>

using namespace std;

const int MOD = 666013;

vector<int> H[MOD + 1];

int N;

inline int f (int Q) {
    return Q % MOD;
}

int findH (int Q) {
    int r = f (Q);

    for (int i = 0; i < H[r].size (); i++) {
        if (H[r][i] == Q) {
            return i;
        }
    }

    return -1;
}

void insertH (int Q) {
    if (findH (Q) == -1) {
        H[ f(Q) ].push_back (Q);
    }
}

void deleteH (int Q) {
    int poz = findH (Q);
    if (poz != -1) {
        int r = f (Q);
        for (int i = poz; i < H[r].size() - 1; i++) {
            H[r][i] = H[r][i + 1];
        }
        H[r].pop_back ();
    }
}

int main () {
    freopen ("hashuri.in", "r", stdin);
    freopen ("hashuri.out", "w", stdout);

    scanf ("%d", &N);
    while (N--) {
        int tip, X;
        scanf ("%d%d", &tip, &X);

        switch (tip) {
            case 1: insertH (X); break;
            case 2: deleteH (X); break;
            case 3: if (findH (X) == -1) {
                        printf ("0\n");
                    }
                    else {
                        printf ("1\n");
                    }
                    break;
        }
    }

    return 0;
}