Cod sursa(job #1105793)

Utilizator andreivFMI - vacaroiu andrei andreiv Data 12 februarie 2014 09:26:24
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <cstdio>
#include <vector>
#define MOD 666013
using namespace std;

vector <int> ok[MOD + 5];

vector<int>::iterator find(int val)
{
    int list = val % MOD;
    for (vector<int>::iterator it = ok[list].begin(); it != ok[list].end(); ++it)
        if (*it == val)
            return it;
    return ok[list].end();
}

void adaugare(int val)
{
    vector<int>::iterator adress = find(val);
    if (adress == ok[val % MOD].end())
        ok[val % MOD].push_back(val);
}

void stergere(int val)
{
    vector<int>::iterator adress = find(val);
    if (adress != ok[val % MOD].end())
        ok[val % MOD].erase(adress);
}

int main()
{
    int n;
    freopen("hashuri.in", "r", stdin);
    freopen("hashuri.out", "w", stdout);
    scanf("%d", &n);
    while (n--)
    {
        int val, tip;
        scanf("%d %d", &tip, &val);
        if (tip == 1)
            adaugare(val);
        if (tip == 2)
            stergere(val);
        if (tip == 3)
            printf("%d\n", (find(val) != ok[val % MOD].end()) ? 1 : 0);
    }
return 0;
}