Cod sursa(job #2627265)

Utilizator iancupoppPopp Iancu Alexandru iancupopp Data 10 iunie 2020 12:05:58
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;

const int N = 1e6 + 1, K = 666019;

static int nr = 0;

int lst[K], val[N], urm[K];

bool apartine(int x) {
  int r = x % K;
  for (int p = lst[r]; p != 0; p = urm[p])
    if (val[p] == x)
      return true;
  return false;
}

void adauga(int x) {
  if (apartine(x))
    return;
  int r = x % K;
  val[++ nr] = x;
  urm[nr] = lst[r];
  lst[r] = nr;
}

void sterge(int x) {
  int r = x % K, p = lst[r];
  while (p != 0 && val[p] != x)
    p = urm[p];
  if (p != 0) {
    val[p] = val[lst[r]];
    lst[r] = urm[lst[r]];
  }
}

int main() {
  ifstream in("hashuri.in");
  ofstream out("hashuri.out");
  
  int n, x, op;
  in >> n;
  for (int i = 1; i <= n; i ++) {
    in >> op >> x;
    switch (op) {
      case 1:
        adauga(x);
        break;
      case 2:
        sterge(x);
        break;
      case 3:
        out << apartine(x) << "\n";
        break;
    }
  }
  
  in.close();
  out.close();
  return 0;
}