Cod sursa(job #1443557)

Utilizator filip.dutescuDutescu Filip Ioan filip.dutescu Data 28 mai 2015 09:39:44
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

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

int lst[2],val[1000001],urm[1000001],nr=0,m=3;

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;
}