Cod sursa(job #1443560)

Utilizator filip.dutescuDutescu Filip Ioan filip.dutescu Data 28 mai 2015 09:43:57
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;
ifstream in("hashuri.in");
ofstream out("hashuri.out");

const int N=1000001, m=666019;
int lst[m],val[N],urm[N],nr=0;

void adauga(int x){
    int r=x%m;
    nr++;

    val[nr]=x;
    urm[nr]=lst[r];
    lst[r]=nr;
}

bool cauta(int x){
    int p=lst[x%m];

    while(p!=0){
        if(val[p]==x) return true;
        p=urm[p];
    }
    return false;
}

void sterge(int x){
    int r=x%m, p;
    p=lst[r];

    if(x==val[p]){
        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,op,x;
    in>>n;

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

    return 0;
}