Cod sursa(job #1447618)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 4 iunie 2015 21:06:34
Problema Hashuri Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 1.17 kb
#include <stdio.h>
#include <stdlib.h>
#define BIGPRIME 666013
#define MAXN 1000001
int v[MAXN],next[MAXN],ind[MAXN];
int main(){
    FILE*fi,*fout;
    int a,b,t,p,i,n;
    fi=fopen("hashuri.in" ,"r");
    fout=fopen("hashuri.out" ,"w");
    fscanf(fi,"%d" ,&n);
    for(i=1;i<=n;i++){
        fscanf(fi,"%d%d" ,&t,&a);
        v[i]=a;
        if(t==1){
            p=ind[a%BIGPRIME];
            while(p>0&&v[p]!=a)
                p=next[p];
            if(v[p]!=a){
                next[i]=ind[a%BIGPRIME];
                ind[a%BIGPRIME]=i;
            }
        }
        if(t==2){
            p=ind[a%BIGPRIME];
            while(p>0&&v[p]!=a)
                p=next[p];
            if(v[p]==a){
                if(v[ind[a%BIGPRIME]]==a)
                   ind[a%BIGPRIME]=next[ind[a%BIGPRIME]];
                next[p]=next[next[p]];
            }
        }
        if(t==3){
            p=ind[a%BIGPRIME];
            while(p>0&&v[p]!=a)
                p=next[p];
            if(v[p]==a)
                fprintf(fout,"1\n");
            else
                fprintf(fout,"0\n");
        }
    }
    fclose(fi);
    fclose(fout);
    return 0;
}