Cod sursa(job #2700842)

Utilizator pielevladutPiele Vladut Stefan pielevladut Data 29 ianuarie 2021 01:03:10
Problema Hashuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <bits/stdc++.h>


using namespace std;

ifstream fin("hashuri.in");
ofstream fout("hashuri.in");

const int MOD = 666019;

const int N = 1000005;

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

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

bool cauta(int x)
{
    int categorie = x % MOD;
    int p = lst[categorie];
    while(p != 0 && val[p] != x)
    {
        p = urm[p];
    }
    if(p)
        return true;
    return false;
}

void sterge(int x)
{
    int categorie = x % MOD;
    int p = lst[categorie];
    while(p != 0 && val[p] != x)
    {
        p = urm[p];
    }
    if(p != 0)
    {
        swap(val[p],val[lst[categorie]]);
        lst[categorie] = urm[lst[categorie]];
    }
}

int main()
{
    int operatii;
    fin >> operatii;
    while(operatii--)
    {
        int tip_operatie, val;
        fin >> tip_operatie >> val;
        if(tip_operatie == 1)
            adauga(val);
        if(tip_operatie == 2)
            sterge(val);
        if(tip_operatie == 3)
            fout << cauta(val) << '\n';
    }
    return 0;
}