Cod sursa(job #2023015)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 17 septembrie 2017 22:50:29
Problema Hashuri Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <cstdio>
#include <vector>

const int MOD = (1 << 14) - 1;

std::vector <int> v[MOD];

inline void add(int x) {
  int y = x % MOD;
  for (int i = 0; i < v[y].size(); ++i) {
    if (v[y][i] == x) {
      return;
    }
  }
  v[x].push_back(x);
}

inline void remove(int x) {
  int y = x % MOD;
  for (int i = 0; i < v[y].size(); ++i) {
    if (v[y][i] == x) {
      v[y][i] = v[y].back();
      v[y].pop_back();
      return;
    }
  }
}

inline bool query(int x) {
  int y = x % MOD;
  for (int i = 0; i < v[y].size(); ++i) {
    if (v[y][i] == x) {
      return 1;
    }
  }
  return 0;
}

int main() {
  int n, op, x;
  FILE *fin = fopen("hashuri.in", "r");
  fscanf(fin, "%d", &n);
  FILE *fout = fopen("hashuri.out", "w");
  for (; n > 0; --n) {
    fscanf(fin, "%d%d", &op, &x);
    if (op == 1) {
      add(x);
    } else if (op == 2) {
      remove(x);
    } else {
      if (query(x)) {
        fprintf(fout, "1\n");
      } else {
        fprintf(fout, "0\n");
      }
    }
  }
  fclose(fin);
  fclose(fout);
  return 0;
}