Cod sursa(job #1233370)

Utilizator andi12Draghici Andrei andi12 Data 25 septembrie 2014 10:59:28
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <cstdio>

using namespace std;
int lst[658549];
int val[1000005];
int urm[1000005];
int m,r=658547;
void ad(int x)
{
    int tip=x%r;
    val[++m]=x;
    urm[m]=lst[tip];
    lst[tip]=m;
}
void del(int x)
{
    int tip=x%r;
    int 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 caut(int x)
{
    int p=lst[x%r];
    while(p!=0)
    {
        if(x==val[p])
            return true;
        p=urm[p];
    }
    return false;
}
int main()
{
    FILE *in,*out;
    in=fopen("hashuri.in","r");
    out=fopen("hashuri.out","w");
    int n,op,x,i;
    bool a;
    fscanf(in,"%d",&n);
    for(i=1;i<=n;i++)
    {
        fscanf(in,"%d%d",&op,&x);
        if(op==1)
            ad(x);
        if(op==2)
            del(x);
        if(op==3)
        {
            a=caut(x);
            fprintf(out,"%d\n",a);
        }
    }
    return 0;
}