Cod sursa(job #1021387)

Utilizator nimeniaPaul Grigoras nimenia Data 3 noiembrie 2013 19:19:38
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <stdio.h>
#include <vector>
#include <set>

using namespace std;

const int md = 666013;

set<int> sets[md];

inline int hash (int val) {
  return val % md;
}

inline void add(int val) {
  int set_index = hash(val);
  sets[set_index].insert(val);
}

inline void remove(int val) {
  int set_index = hash(val);
  sets[set_index].erase(val);
}

inline int find(int val) {
  int set_index = hash(val);
  set<int> &s = sets[set_index];
  return s.find(val) == s.end() ? 0 : 1;
}

int main(int argc, char *argv[])
{

  int n;

  scanf("%d", &n);

  for (int i = 0; i < n; i++) {
    int op, val;
    scanf("%d %d", &op, &val);

    switch (op) {
    case 1: add(val); break;
    case 2: remove(val); break;
    case 3: printf("%d\n", find(val)); break;
    }
  }

  return 0;
}