Cod sursa(job #1517688)

Utilizator antanaAntonia Boca antana Data 4 noiembrie 2015 18:17:26
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include<cstdio>
#define mod 6526813
#define MAXM 1000000
using namespace std;
int n,m,k, lista[mod+1], val[MAXM+1], nxt[MAXM+1];
void adauga(int x)
{
    int p=lista[x%mod];
    while(p){
        if(val[p]==x)
            return;
        p=nxt[p];
    }
    k++;
    val[k]=x;
    nxt[k]=lista[x%mod];
    lista[x%mod]=k;
}
void sterge(int x)
{
    int p=lista[x%mod];
    while(p)
    {
        if(val[p]==x){
           val[p]=-1;
           return;
        }
        p=nxt[p];
    }
}
int cauta(int x)
{
    int p=lista[x%mod];
    while(p){
        if(val[p]==x)
            return 1;
        p=nxt[p];
    }
    return 0;
}
int main()
{
    freopen("hashuri.in", "r", stdin);
    freopen("hashuri.out", "w", stdout);
    int op, i,x;
    scanf("%d", &m);
    for(i=1;i<=m;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;
}