Cod sursa(job #1368793)

Utilizator lacraruraduRadu Matei Lacraru lacraruradu Data 2 martie 2015 20:01:25
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream in("hashuri.in");
ofstream out("hashuri.out");

const int MOD = 666013;
const int N = 1000001;

int n;
int lst[MOD], val[N], urm[N], nr = 0;

void adauga(int x)
{
    int r = x % MOD;
    val[++nr] = x;
    urm[nr] = lst[r];
    lst[r] = nr;
}

bool cauta(int x)
{
    int r = x % MOD;

    for(int p = lst[r]; p; p = urm[p])
        if(val[p] == x)
            return 1;

    return 0;
}

void sterge(int x)
{
    int r = x % MOD;
    int p = lst[r];
    if(val[p] == x)
    {
        lst[r] = urm[p];
        return;
    }
    for(p = lst[r]; urm[p]; p = urm[p])
        if(val[urm[p]] == x)
        {
            urm[p] = urm[urm[p]];
            return;
        }
}

int main()
{
    in >> n;

    for(int i = 1; i <= n; i++)
    {
        int op, x;
        in >> op >> x;

        switch(op)
        {
            case 1:
                adauga(x);
                break;
            case 2:
                sterge(x);
                break;
            case 3:
                out << cauta(x) << '\n';
                break;
        }
    }
    return 0;
}