Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef struct element {
- int val, freq;
- element *next;
- } *lista;
- const int MASK = (1 << 23) - 1;
- const int mod = 196613;
- bitset<MASK + 1> filter;
- lista h[mod];
- void Insert(int x) {
- filter[x & MASK] = true;
- int key = x % mod;
- lista p;
- for (p = h[key]; p; p = p->next)
- if (p->val == x) {
- ++p->freq;
- return;
- }
- p = new element;
- p->val = x;
- p->freq = 1;
- p->next = h[key];
- h[key] = p;
- }
- void Erase(int x) {
- if (!filter[x & MASK])
- return;
- int key = x % mod;
- for (lista p = h[key]; p; p = p->next)
- if (p->val == x) {
- --p->freq;
- return;
- }
- }
- int Find(int x) {
- if (!filter[x & MASK])
- return 0;
- int key = x % mod;
- for (lista p = h[key]; p; p = p->next)
- if (p->val == x)
- return p->freq;
- return 0;
- }
Add Comment
Please, Sign In to add comment