Cod sursa(job #1370541)

Utilizator pincucatalinPincu Catalin pincucatalin Data 3 martie 2015 15:35:14
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <cstdio>

using namespace std;
FILE *in=fopen ("hashuri.in","r");
FILE *out=fopen ("hashuri.out","w");
const int N=1000000,k=666013;
int lst [k],val[N],urm[N],n;
void adauga (int x)
{
    int r=x%k;
    val[++n]=x;
    urm[n]=lst[r];
    lst[r]=n;
}
void sterge (int x)
{
    int r=x%k,p;
    p=lst[r];
    if (x==val[p])
    {
        lst[r]=urm[lst[r]];
        return;
    }
    while (urm[p]!=0 && val[urm[p]]!=x)
        p=urm[p];
    if (urm[p]!=0)
        urm[p]=urm[urm[p]];
}
int cauta (int x)
{
    int r=x%k,p;
    p=lst[r];
    while (p!=0)
    {
        if (val[p]==x)
            return 1;
        p=urm[p];
    }
    return 0;
}
void citire ()
{
    int n;
    fscanf (in,"%d",&n);
    for (int i=1; i<=n; i++)
    {
        int x,y;
        fscanf (in,"%d%d",&x,&y);
        if (x==1)
            adauga (y);
        if (x==2)
            sterge (y);
        if (x==3)
        {
            fprintf (out,"%d\n",cauta(y));
        }
    }
}
int main()
{
    citire();
    return 0;
}