Cod sursa(job #1817696)

Utilizator lauratalaatlaura talaat lauratalaat Data 28 noiembrie 2016 12:42:54
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<cstdio>
#define mod 6526813
#define MAXM 1000000
int n,k, lista[mod+1], val[MAXM+1], next[MAXM+1];
void adauga(int x){
    int p=lista[x%mod];
    while(p!=0){
        if(val[p]==x)
            return;
        p=next[p];
    }
    k++;
    val[k]=x;
    next[k]=lista[x%mod];
    lista[x%mod]=k;
}
void sterge(int x){
    int p=lista[x%mod];
    while(p!=0){
        if(val[p]==x){
           val[p]=-1;
           return;
        }
        p=next[p];
    }
}
int cauta(int x){
    int p=lista[x%mod];
    while(p!=0){
        if(val[p]==x)
            return 1;
        p=next[p];
    }
    return 0;
}
int main(){
    freopen("hashuri.in", "r", stdin);
    freopen("hashuri.out", "w", stdout);
    int op, i,x;
    scanf("%d", &n);
    for(i=1;i<=n;i++){
        scanf("%d%d", &op, &x);
        if(op==1)
            adauga(x);
        if(op==2)
            sterge(x);
        if(op==3)
            printf("%d\n", cauta(x));
    }
    return 0;
}