Cod sursa(job #1189360)

Utilizator alexclpAlexandru Clapa alexclp Data 22 mai 2014 16:12:43
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>

using namespace std;

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

const int MOD = 1914354;

int operatii;
int nr;

int val[MOD], lst[MOD], urm[MOD];

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

bool find(int x)
{
    int p = lst[x%MOD];
    while (p != 0 and val[p] != x) {
        p = urm[p];
    }

    return (p != 0);
}

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

    while (urm[p] != 0 and val[urm[p]] != x) {
        p = urm[p];
    }

    if (urm[p] != 0) {
        urm[p] = urm[urm[p]];
    }
}

void read()
{
    in >> operatii;

    for (int i = 1; i <= operatii; ++i) {
        int tip, element;
        in >> tip >> element;

        if (tip == 1) {
            add(element);
        } else if (tip == 2) {
            remove(element);
        } else if (tip == 3) {
            out << find(element) << "\n";
        }
    }
}

int main()
{
    read();

    return 0;
}