#include <bits/stdc++.h>
using namespace std;
long getMaxCumulativeObservableSum(vector<int> stockPrice, int k) {
unordered_map<int, int> freq; // To track frequency of elements in the current window
long currentSum = 0, maxSum = -1;
int n = stockPrice.size();
int left = 0;
for (int right = 0; right < n; ++right) {
int val = stockPrice[right];
freq[val]++;
currentSum += val;
// If window size exceeds k, shrink it from left
if (right - left + 1 > k) {
int leftVal = stockPrice[left++];
freq[leftVal]--;
currentSum -= leftVal;
if (freq[leftVal] == 0) freq.erase(leftVal);
}
// Check if window size is k and all elements are distinct
if (right - left + 1 == k && freq.size() == k) {
maxSum = max(maxSum, currentSum);
}
}
return maxSum;
}
int main() {
// Example usage
vector<int> stockPrice = {1, 2, 7, 7, 4, 3, 6};
int k = 3;
cout << getMaxCumulativeObservableSum(stockPrice, k) << endl; // Output: 14
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpsb25nIGdldE1heEN1bXVsYXRpdmVPYnNlcnZhYmxlU3VtKHZlY3RvcjxpbnQ+IHN0b2NrUHJpY2UsIGludCBrKSB7CiAgICB1bm9yZGVyZWRfbWFwPGludCwgaW50PiBmcmVxOyAgLy8gVG8gdHJhY2sgZnJlcXVlbmN5IG9mIGVsZW1lbnRzIGluIHRoZSBjdXJyZW50IHdpbmRvdwogICAgbG9uZyBjdXJyZW50U3VtID0gMCwgbWF4U3VtID0gLTE7CiAgICBpbnQgbiA9IHN0b2NrUHJpY2Uuc2l6ZSgpOwogICAgaW50IGxlZnQgPSAwOwoKICAgIGZvciAoaW50IHJpZ2h0ID0gMDsgcmlnaHQgPCBuOyArK3JpZ2h0KSB7CiAgICAgICAgaW50IHZhbCA9IHN0b2NrUHJpY2VbcmlnaHRdOwogICAgICAgIGZyZXFbdmFsXSsrOwogICAgICAgIGN1cnJlbnRTdW0gKz0gdmFsOwoKICAgICAgICAvLyBJZiB3aW5kb3cgc2l6ZSBleGNlZWRzIGssIHNocmluayBpdCBmcm9tIGxlZnQKICAgICAgICBpZiAocmlnaHQgLSBsZWZ0ICsgMSA+IGspIHsKICAgICAgICAgICAgaW50IGxlZnRWYWwgPSBzdG9ja1ByaWNlW2xlZnQrK107CiAgICAgICAgICAgIGZyZXFbbGVmdFZhbF0tLTsKICAgICAgICAgICAgY3VycmVudFN1bSAtPSBsZWZ0VmFsOwogICAgICAgICAgICBpZiAoZnJlcVtsZWZ0VmFsXSA9PSAwKSBmcmVxLmVyYXNlKGxlZnRWYWwpOwogICAgICAgIH0KCiAgICAgICAgLy8gQ2hlY2sgaWYgd2luZG93IHNpemUgaXMgayBhbmQgYWxsIGVsZW1lbnRzIGFyZSBkaXN0aW5jdAogICAgICAgIGlmIChyaWdodCAtIGxlZnQgKyAxID09IGsgJiYgZnJlcS5zaXplKCkgPT0gaykgewogICAgICAgICAgICBtYXhTdW0gPSBtYXgobWF4U3VtLCBjdXJyZW50U3VtKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIG1heFN1bTsKfQoKaW50IG1haW4oKSB7CiAgICAvLyBFeGFtcGxlIHVzYWdlCiAgICB2ZWN0b3I8aW50PiBzdG9ja1ByaWNlID0gezEsIDIsIDcsIDcsIDQsIDMsIDZ9OwogICAgaW50IGsgPSAzOwogICAgY291dCA8PCBnZXRNYXhDdW11bGF0aXZlT2JzZXJ2YWJsZVN1bShzdG9ja1ByaWNlLCBrKSA8PCBlbmRsOyAvLyBPdXRwdXQ6IDE0CiAgICByZXR1cm4gMDsKfQ==