tmp
const int N = 1e6 + 10; struct HashSet { struct node { int k, v, nex; } buf[N]; int h[N], tot, mod = 1000009; void insert(int x) { int pos = x % mod; for (int i = h[pos]; i; i = buf[i].nex) { if (buf[i].k == x) { buf[i].v++; return; } } buf[++tot] = {x, 1, h[pos]}; h[pos] = tot; } int find(int x) { int pos = x % mod; for (int i = h[pos]; i; i = buf[i].nex) { if (buf[i].k == x) return buf[i].v; } return 0; } } mp;