Cod sursa(job #972795)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 12 iulie 2013 18:01:36
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <cstdio>
#include <list>
using namespace std;

const int MOD = 1000013;
list <int> L[MOD];

list <int> :: iterator HASH_search (const int x) {

    const int k = x % MOD;
    for (list <int> :: iterator i = L[k].begin (); i != L[k].end (); ++i)
        if (*i == x)
            return i;
    return L[k].end ();

}

void HASH_insert (const int x) {

    const int k = x % MOD;
    if (HASH_search (x) == L[k].end ())
        L[k].push_back (x);

}

void HASH_erase (const int x) {

    const int k = x % MOD;
    list <int> :: iterator i = HASH_search (x);
    if (i != L[k].end ()) {
        L[k].erase (i);
    }

}

void HASH_check (const int x) {

    const int k = x % MOD;
    list <int> :: iterator i = HASH_search (x);
    if (i != L[k].end ())
        printf ("1\n");
    else
        printf ("0\n");

}

int main () {

    freopen ("hashuri.in", "r", stdin);
    freopen ("hashuri.out", "w", stdout);
    int N, t, x;
    scanf ("%d", &N);
    while (N--) {
        scanf ("%d%d", &t, &x);
        if (t == 1) {
            HASH_insert (x);
            continue;
        }
        if (t == 2) {
            HASH_erase (x);
            continue;
        }
        HASH_check (x);
    }

}