Cod sursa(job #673252)

Utilizator rusu_raduRusu Radu rusu_radu Data 4 februarie 2012 10:29:01
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <cstdio>
#include <cassert>
#include <vector>
#define Mod 666013
#define InFile "hashuri.in"
#define OutFile "hashuri.out"
#define pb push_back

using namespace std;

int n;
vector <int> H[Mod];

int search (int x);
void insert (int x);
void erase (int x);

int main()
{
  int i, op, x;
  assert (freopen (InFile, "r", stdin));
  assert (freopen (OutFile, "w", stdout));
  scanf ("%d\n", &n);
  for (i=1; i<=n; i++)
  {
    scanf ("%d %d\n", &op, &x);
    if (op==1)
      insert (x);
    if (op==2)
      erase (x);
    if (op==3)
      if (search (x)!=-1)
        printf ("1\n");
      else
        printf ("0\n");
  }
  return 0;
}

int search (int x)
{
  int i, ch=x%Mod, lg=H[ch].size();
  for (i=0; i<lg; i++)
    if (H[ch][i]==x)
      return i;
  return -1;
}

void insert (int x)
{
  int ch=x%Mod, pz=search (x);
  if (pz==-1)
    H[ch].pb (x);
}

void erase (int x)
{
  int ch=x%Mod, pz=search (x);
  if (pz!=-1)
    H[ch].erase (H[ch].begin()+pz);
}