#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
int countPairsWithDifferenceK(const vector<int>& b, int k) {
unordered_map<int, int> freq;
int count = 0;
for (int j = 0; j < b.size(); ++j) {
if (freq.find(b[j] - k) != freq.end()) {
count += freq[b[j] - k]; //count++ only works when all elements are unique
}
if (k != 0 && freq.find(b[j] + k) != freq.end()) { // to avoid double counting when k = 0
count += freq[b[j] + k];
}
freq[b[j]]++;
}
return count;
}
int main() {
vector<int> b = {1, 5, 3, 4, 2};
int k = 2;
cout << countPairsWithDifferenceK(b, k) << endl; // Output should be the number of pairs with difference k
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgY291bnRQYWlyc1dpdGhEaWZmZXJlbmNlSyhjb25zdCB2ZWN0b3I8aW50PiYgYiwgaW50IGspIHsKICAgIHVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IGZyZXE7CiAgICBpbnQgY291bnQgPSAwOwoKICAgIGZvciAoaW50IGogPSAwOyBqIDwgYi5zaXplKCk7ICsraikgewogICAgICAgIGlmIChmcmVxLmZpbmQoYltqXSAtIGspICE9IGZyZXEuZW5kKCkpIHsKICAgICAgICAgICAgY291bnQgKz0gZnJlcVtiW2pdIC0ga107IC8vY291bnQrKyBvbmx5IHdvcmtzIHdoZW4gYWxsIGVsZW1lbnRzIGFyZSB1bmlxdWUKICAgICAgICB9CiAgICAgICAgaWYgKGsgIT0gMCAmJiBmcmVxLmZpbmQoYltqXSArIGspICE9IGZyZXEuZW5kKCkpIHsgLy8gdG8gYXZvaWQgZG91YmxlIGNvdW50aW5nIHdoZW4gayA9IDAKICAgICAgICAgICAgY291bnQgKz0gZnJlcVtiW2pdICsga107CiAgICAgICAgfQoKICAgICAgICBmcmVxW2Jbal1dKys7CiAgICB9CgogICAgcmV0dXJuIGNvdW50Owp9CgppbnQgbWFpbigpIHsKICAgIHZlY3RvcjxpbnQ+IGIgPSB7MSwgNSwgMywgNCwgMn07CiAgICBpbnQgayA9IDI7CiAgICBjb3V0IDw8IGNvdW50UGFpcnNXaXRoRGlmZmVyZW5jZUsoYiwgaykgPDwgZW5kbDsgLy8gT3V0cHV0IHNob3VsZCBiZSB0aGUgbnVtYmVyIG9mIHBhaXJzIHdpdGggZGlmZmVyZW5jZSBrCiAgICByZXR1cm4gMDsKfQo=