Cod sursa(job #1233365)

Utilizator alexpascadiAlexandru Pascadi alexpascadi Data 25 septembrie 2014 10:53:31
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <stdio.h>

using namespace std;

const int R=666013;
const int N=1000001;

int lst[R],val[N],urm[N];
int m;

void adauga (int x)
{
    int tip=x%R;
    val[++m]=x;
    urm[m]=lst[tip];
    lst[tip]=m;
}

void sterge (int x)
{
    int tip=x%R,p;
    p=lst[tip];

    if(x==val[p])
        lst[tip]=urm[p];

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

bool cauta (int x)
{
    int p=lst[x%R];
    while(p!=0)
    {
        if(x==val[p])
            return 1;
        p=urm[p];
    }
    return 0;
}

int main()
{
    FILE *in,*out;
    in=fopen("hashuri.in","r");
    out=fopen("hashuri.out","w");

    int n,i,op,x;

    fscanf(in,"%d",&n);

    for(i=0;i<n;i++)
    {
        fscanf(in,"%d%d",&op,&x);
        if(op==1)
            adauga(x);
        if(op==2)
            sterge(x);
        if(op==3)
            fprintf(out,"%d\n",cauta(x));
    }

    return 0;
}