Cod sursa(job #1809284)

Utilizator ovidiu_zic@yahoo.comPurecel Mihai [email protected] Data 18 noiembrie 2016 19:48:46
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in("hashuri.in");
ofstream out("hashuri.out");
const int N = 1000000, k = 666019;
int op, nr, x;
int lst[k], val[N], urm[N];


bool exista(int x){
    int r = x%k,p;
    p = lst[r];
    while(p!=0){
        if(val[p] == x)
            return true;
        p = urm[p];
    }
    return false;
}

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

void sterge(int x){
    int r = x%k, p;
    p = lst[r];
    if(val[p] == x){
        lst[r] = urm[p];
        return;
    }
    while(urm[p] != 0){
        if(val[urm[p]] == x)
            urm[p] = urm[urm[p]];
        else
            p = urm[p];
    }
}


int main()
{
    int n,i;
    in>>n;
    for(i=1;i<=n;i++){
        in>>op>>x;
        if(op==1)
            adauga(x);
        else if(op == 2)
            sterge(x);
        else    out<<exista(x)<<"\n";
    }

    return 0;
}