Cod sursa(job #1528934)

Utilizator NastureNasture Anca Nasture Data 20 noiembrie 2015 11:25:26
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.59 kb
#include<cstdio>
#define MOD 666013
struct nod{
        int info;
        nod* next;
};
nod* v[666013];
void adaug_x(nod*&prim,int nr){
    int pp=0;
    if(prim==NULL){
        prim=new nod;
        prim->info=nr;
        prim->next=NULL;
    }
    else
    if(prim->info==nr)
        pp=1;
    else{
        nod*aux=prim;
        while(aux->next!=NULL&&pp==0)
            if(aux->next->info==nr)
                pp=1;
            else
                aux=aux->next;
        if(pp==0){
            nod*aux=new nod;
            aux->info=nr;
            prim->next=aux;
        }
    }
}

void extrag_x(nod*&prim,int nr){
    if(prim!=NULL)
        if(prim->info==nr){
            nod*aux=prim;
            prim=prim->next;
            delete(aux);
        }
        else{
            nod*aux=prim;
            while(aux->next!=NULL&&aux->next->info!=nr)
                aux=aux->next;
            if(aux->next!=NULL){
                nod*aux1=aux->next;
                aux->next=aux->next->next;
                delete(aux1);
            }
        }
}
int gasit(nod*prim,int nr){
    while(prim!=NULL)
        if(prim->info==nr)
            return 1;
    return 0;
}



int main(){
    int i,n,op,nr,j;
    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        scanf("%d%d",&op,&nr);
        j=nr%MOD;
        if(op==1)
            adaug_x(v[j],nr);
        if(op==2)
            extrag_x(v[j],nr);
        if(op==3)
            printf("%d\n",gasit(v[j],nr));
    }
    return 0;
}