import java.util.HashMap;
import java.util.Map;
public class Main {
public static int countPairsOptimized(int[] b, int k) {
int count = 0;
Map
<Integer, Integer
> freqMap
= new HashMap
<>(); for (int i = b.length - 1; i >= 0; --i) {
int target = b[i] - k; // 🔥 check future j’s
if (freqMap.containsKey(target)) {
count += freqMap.get(target);
}
freqMap.put(b[i], freqMap.getOrDefault(b[i], 0) + 1);
}
return count;
}
public static void main
(String[] args
) { int[] b = {1, 5, 3, 4, 2};
int k = 2;
System.
out.
println("Count of pairs: " + countPairsOptimized
(b, k
)); }
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLk1hcDsKIApwdWJsaWMgY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIGludCBjb3VudFBhaXJzT3B0aW1pemVkKGludFtdIGIsIGludCBrKSB7CiAgICAgICAgaW50IGNvdW50ID0gMDsKICAgICAgICBNYXA8SW50ZWdlciwgSW50ZWdlcj4gZnJlcU1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICBmb3IgKGludCBpID0gYi5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICAgICBpbnQgdGFyZ2V0ID0gYltpXSAtIGs7IC8vIPCflKUgY2hlY2sgZnV0dXJlIGrigJlzCiAgICAgICAgICAgIGlmIChmcmVxTWFwLmNvbnRhaW5zS2V5KHRhcmdldCkpIHsKICAgICAgICAgICAgICAgIGNvdW50ICs9IGZyZXFNYXAuZ2V0KHRhcmdldCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnJlcU1hcC5wdXQoYltpXSwgZnJlcU1hcC5nZXRPckRlZmF1bHQoYltpXSwgMCkgKyAxKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNvdW50OwogICAgfQogCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50W10gYiA9IHsxLCA1LCAzLCA0LCAyfTsKICAgICAgICBpbnQgayA9IDI7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb3VudCBvZiBwYWlyczogIiArIGNvdW50UGFpcnNPcHRpbWl6ZWQoYiwgaykpOwogICAgfQp9