Cod sursa(job #1579236)

Utilizator Master011Dragos Martac Master011 Data 24 ianuarie 2016 15:56:26
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <stdio.h>

using namespace std;

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

const int R=1002577;
const int N=1000001;

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

inline 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()
{
    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;
}