Cod sursa(job #239458)

Utilizator mika17Mihai Alex Ionescu mika17 Data 4 ianuarie 2009 20:33:38
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <vector>
#include <fstream>

using namespace std;

ifstream fin("hashuri.in");
ofstream fout("hashuri.out");

const int HS =  10000;
vector<int> H[HS];

inline int h(int x)
{
 return (int) (  ( (x * 0.618033) - (int)(x * 0.618033) )  * HS );
}

void insert(int x)
{
        H[h(x)].push_back(x);
}

void erase(int x)
{
        int hh = h(x);
        vector<int>::iterator it;
        for(it = H[hh].begin(); it != H[hh].end(); ++it)
           if(*it == x)
           {
            H[hh].erase(it);
            return;
           }
}

int search(int x)
{
 int hh = h(x);
 for(vector<int>::iterator it = H[hh].begin(); it != H[hh].end(); ++it)
  if(*it == x) return 1;

 return 0;
}

int main()
{
        int N,op,x;
        fin>>N;

        while(N--)
        {
         fin>>op>>x;
         switch(op)
         {
          case 1: insert(x); break;
          case 2: erase(x); break;
          case 3: fout<<search(x)<<'\n'; break;
         }
        }

        return 0;
}