Cod sursa(job #1496322)

Utilizator andreiudilaUdila Andrei andreiudila Data 4 octombrie 2015 19:10:58
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
using namespace std;
ifstream fin("huri.in");
ofstream fout("huri.out");
int n,i,op,x;

typedef struct celula{
int val;
celula *next;
}*lista;

int mod=666013;
lista h[666013];
lista q;
lista prec;

void insert(int x)
{
    int lin=x%mod;
    for(lista p=h[lin]; p; p=p->next)
    if(p->val==x) return;

    q=new celula;
    q->val=x;
    q->next=h[lin];
    h[lin]=q;
}

void del(int x)
{
    int lin=x%mod;

    if (h[lin]==NULL) return;

    if(h[lin]->val==x) h[lin]=h[lin]->next;
    else {
     prec=h[lin];
     q=prec->next;

     while(q!=NULL)
       {
         if(q->val==x)
            {
            prec->next=q->next;
            return;
            }

        prec=q;
        q=q->next;
       }
    }
}

bool ret(int x)
{
    int lin=x%mod;

    for(lista p=h[lin]; p; p=p->next)
        if(p->val==x) return 1;

    return 0;
}


int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
        {
            fin>>op>>x;
            if(op==1) insert(x);
            else if(op==2)  del(x);
            else fout<<ret(x)<<'\n';
        }
    return 0;
}