Cod sursa(job #1370675)

Utilizator andrei_r_97Radoi Andrei andrei_r_97 Data 3 martie 2015 16:26:28
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <cstdio>
#include <vector>

#define MOD 666013

using namespace std;

vector<int> H[MOD];

vector <int>::iterator find_value(int x) {
  int ind = x % MOD;
  vector<int>::iterator it;

  for (it = H[ind].begin(); it != H[ind].end(); it++)
    if (*it == x)
      return it;
  return H[ind].end();
}

void insert_value(int x) {
  int ind = x % MOD;
  if (find_value(x) == H[ind].end())
    H[ind].push_back(x);
}

void erase_value(int x) {
  int ind = x % MOD;
  vector<int>::iterator it = find_value(x);

  if (it != H[ind].end())
    H[ind].erase(it);
}

int main() {

  FILE *in  = fopen("hashuri.in", "r");
  FILE *out = fopen("hashuri.out", "w");
  int n;

  fscanf(in, "%d", &n);

  int operatie, x;
  for(int i = 1; i <= n; i++) {
    fscanf(in, "%d %d", &operatie, &x);
    switch (operatie) {
      case 1:
        insert_value(x);
        break;
      case 2:
        erase_value(x);
        break;
      case 3:
        if (find_value(x) == H[x % MOD].end())
          fprintf(out, "0\n");
        else
          fprintf(out, "1\n");
        break;
    }
  }

  return 0;
}