#include <iostream>
#include <unordered_map>
using namespace std;
#define fo(i,start,end) for(int i=start;i<end;i++)
int main() {
int arr[] = {3, 2, 4, 3, 1};
int k = 3; // distance
int n = 5; // size
// Store every element and its last occurrence index
unordered_map<int, int> mp;
fo(i, 0, n){
// 1. Check if the element already exists in the map
if(mp.find(arr[i]) != mp.end()) {
// 2. Calculate distance using the PREVIOUS occurrence
int distance = i - mp[arr[i]];
// 3. If it's within distance k, we found our match
if(distance <= k) {
cout << "True" << endl;
return 0;
}
}
// 4. Update the map with the CURRENT index
// We do this whether it was found or not, because we always want
// to keep the most recent index for future comparisons.
mp[arr[i]] = i;
}
cout << "False" << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZm8oaSxzdGFydCxlbmQpIGZvcihpbnQgaT1zdGFydDtpPGVuZDtpKyspCgppbnQgbWFpbigpIHsKICAgIGludCBhcnJbXSA9IHszLCAyLCA0LCAzLCAxfTsKICAgIGludCBrID0gMzsgLy8gZGlzdGFuY2UKICAgIGludCBuID0gNTsgLy8gc2l6ZQogICAgCiAgICAvLyBTdG9yZSBldmVyeSBlbGVtZW50IGFuZCBpdHMgbGFzdCBvY2N1cnJlbmNlIGluZGV4CiAgICB1bm9yZGVyZWRfbWFwPGludCwgaW50PiBtcDsgCiAgICAKICAgIGZvKGksIDAsIG4pewogICAgICAgIC8vIDEuIENoZWNrIGlmIHRoZSBlbGVtZW50IGFscmVhZHkgZXhpc3RzIGluIHRoZSBtYXAKICAgICAgICBpZihtcC5maW5kKGFycltpXSkgIT0gbXAuZW5kKCkpIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIDIuIENhbGN1bGF0ZSBkaXN0YW5jZSB1c2luZyB0aGUgUFJFVklPVVMgb2NjdXJyZW5jZQogICAgICAgICAgICBpbnQgZGlzdGFuY2UgPSBpIC0gbXBbYXJyW2ldXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIDMuIElmIGl0J3Mgd2l0aGluIGRpc3RhbmNlIGssIHdlIGZvdW5kIG91ciBtYXRjaAogICAgICAgICAgICBpZihkaXN0YW5jZSA8PSBrKSB7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICJUcnVlIiA8PCBlbmRsOwogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gNC4gVXBkYXRlIHRoZSBtYXAgd2l0aCB0aGUgQ1VSUkVOVCBpbmRleAogICAgICAgIC8vIFdlIGRvIHRoaXMgd2hldGhlciBpdCB3YXMgZm91bmQgb3Igbm90LCBiZWNhdXNlIHdlIGFsd2F5cyB3YW50IAogICAgICAgIC8vIHRvIGtlZXAgdGhlIG1vc3QgcmVjZW50IGluZGV4IGZvciBmdXR1cmUgY29tcGFyaXNvbnMuCiAgICAgICAgbXBbYXJyW2ldXSA9IGk7IAogICAgfQogICAgCiAgICBjb3V0IDw8ICJGYWxzZSIgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9