Cod sursa(job #642797)

Utilizator bmaticanBogdan-Alexandru Matican bmatican Data 2 decembrie 2011 11:47:56
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <list>

using namespace std;

ifstream in("hashuri.in");
ofstream out("hashuri.out");

const int MAXIM = 1000000;
list<int> h[MAXIM];

list<int>::iterator find(int x) {
  int pos = x % MAXIM;
  for (list<int>::iterator it = h[pos].begin(); it != h[pos].end(); ++it) {
    if (*it == x) {
      return it;
    }
  }
  return h[pos].end();
}

void solve() {
  int n;
  in >> n;
  int t;
  int x;
  while (n--) {
    in >> t >> x;
    int pos = x % MAXIM;
    if (1 == t) {
      if (find(x) == h[pos].end()) {
        h[pos].push_front(x);
      }
    } else if (2 == t) {
      list<int>::iterator it = find(x);
      if (it != h[pos].end()) {
        h[pos].erase(it);
      }
    } else if (3 == t) {
      out << (find(x) != h[pos].end()) << endl;
    }
  }
}

int main() {
  solve();
  return 0;
}