Cod sursa(job #734228)

Utilizator a08iAndrei Ionescu a08i Data 13 aprilie 2012 20:51:42
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include<iostream>
#include<cstdio>
#include<vector>

using namespace std;

#define SIZE 9973
typedef vector< vector<int> > Hash;

int hashf(int what)
{
  return what % SIZE;
}

bool in_hash(Hash &hash, int what)
{
  int hs = hashf(what);
  int sz = hash[hs].size();
  for(int i=0; i<sz; i++)
  {
    if(hash[hs][i] == what)
    {
      return true;
    }
  }
  return false;
}

void insert(Hash &hash, int what)
{
  int hs = hashf(what);
  if(!in_hash(hash, what))
  {
    hash[hs].push_back(what);
  }
}

void del(Hash &hash, int what)
{
  int hs = hashf(what);
  int sz = hash[hs].size();
  for(int i=0; i<sz; i++)
  {
    if(hash[hs][i] == what)
    {
      hash[hs].erase(hash[hs].begin() + i);
      return;
    }
  }
}



int main()
{

  freopen("hashuri.in", "r", stdin);
  freopen("hashuri.out", "w", stdout);

  int N, Type, X;

  scanf("%d", &N);
  Hash myhash(SIZE, vector<int>());

  for(int i=0; i<N; i++)
  {
    scanf("%d %d", &Type, &X);

    switch(Type)
    {
      case 1:
        insert(myhash, X);
        break;
      case 2:
        del(myhash, X);
        break;
      case 3:
        cout << in_hash(myhash, X)<<endl;
        break;
    }
  }

  return 0;
}