Cod sursa(job #1308929)

Utilizator deea101Andreea deea101 Data 4 ianuarie 2015 21:24:44
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.59 kb
#define NMAX 2000001

using namespace std;

class Hash
{
    private:
        struct node
        {
            int key,state;
            node ()
            {
                state=0;
            }
        }v[NMAX];
        int size;
        
        int hash(int key)
        {
            return key%size;
        }

    public:
		Hash()
		{
			size=NMAX;
		}
        void insert(int key)
        {
            if(lookup(key)) return;
            int h=hash(key);

            while(v[h].state==1)
            {
                h++;
                if(h==size) h=0;
            }
            
            v[h].state=1;
            v[h].key=key;
        }

        bool lookup(int key)
        {
            int h=hash(key);
            while(v[h].state!=0 && v[h].key!=key)
            {
                h++;
                if(h==size) h=0;
            }
            
            if(v[h].key==key) return 1;
            else return 0;
        }
        
        void del(int key)
        {
            int h=hash(key);
            while(v[h].state!=0 && v[h].key!=key)
            {
                h++;
                if(h==size) h=0;
            }
            if(v[h].key==key)
            {
                v[h].state=-1;
                v[h].key=-1;
            }
        }
}H;

#include <fstream>
ifstream f("hashuri.in");
ofstream g("hashuri.out");
int main()
{
	int N,q,x;
	f>>N;
	while(N--)
	{
		f>>q>>x;
		switch (q)
		{
			case 1: H.insert(x); break;
			case 2: H.del(x); break;
			case 3: g<<H.lookup(x)<<'\n'; break;
		}
	}
}