Cod sursa(job #657353)

Utilizator rootsroots1 roots Data 6 ianuarie 2012 14:04:51
Problema Hashuri Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>

#define MOD 999983

using namespace std;

struct hash
{
    int nod;
    hash *link;
}*H[MOD];

ifstream in;
ofstream out;

inline int find(int x,int val)
{
    for(hash *p=H[x];p;p=p->link)
        if(p->nod==val) return 1;
    return 0;
}

inline void add(int x,int val)
{
    hash *p=new hash;
    p->nod=val;
    p->link=H[x];
    H[x]=p;
}

inline void del(int x,int val)
{
    for(hash *p=H[x],*q=NULL;p;q=p,p=p->link)
        if(p->nod==val)
        {
            if(q==NULL) H[x]=p->link;
            else q->link=p->link;
            delete p;
            return;
        }
}

int main()
{
    int ok,N,x,y;

    in.open("hashuri.in");

    in>>N;

    out.open("hashuri.out");

    for(;N--;)
    {
        in>>x>>y;
        ok=find(y%MOD,y);

        if(x==3) out<<ok<<'\n';
        else
        if(ok&&x==2) del(y%MOD,y);
        else
        if(!ok) add(y%MOD,y);
    }

    in.close();
    out.close();

    return 0;
}