Cod sursa(job #2698476)

Utilizator pielevladutPiele Vladut Stefan pielevladut Data 22 ianuarie 2021 11:30:10
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MOD = 666019;
const int N = 1000001;

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

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

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

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

int main()
{
    int n;
    fin >> n;
    for(int i = 1; i <= n; i ++)
    {
        int operatie, x;
        fin >> operatie;
        fin >> x;
        if(operatie == 1)
        {
            adauga(x);
        }
        if(operatie == 2)
        {
            sterg(x);
        }
        if(operatie == 3)
        {
            fout << caut(x) << '\n';
        }
    }
    return 0;
}