/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
int [] nums = {5, -100, 5, 1};
int k = 4;
int n = nums.length;
int[] preSum = new int[n + 1];
for(int i = 1; i <= n; i++){
preSum[i] = nums[i - 1] + preSum[i-1];
}
HashMap
<Integer, Integer
> map
= new HashMap
<>();
int ans = 0;
for(int j = 0; j < n; j++){
int num1 = nums[j] - k;
int num2 = nums[j] + k;
int sum1 = 0;
int sum2 = 0;
if(map.containsKey(num1)){
sum1 = preSum[j + 1] - preSum[map.get(num1)];
}
if(map.containsKey(num2)){
sum2 = preSum[j + 1] - preSum[map.get(num2)];
}
ans
= Math.
max(ans,
Math.
max(sum1, sum2
));
int number = nums[j];
int idx = j;
if(map.containsKey(number)){
if(preSum[j + 1] < preSum[map.get(number) + 1]){
map.put(number, j);
}
}else{
map.put(number, j);
}
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlpbnQgW10gbnVtcyA9IHs1LCAtMTAwLCA1LCAxfTsKCQlpbnQgayA9IDQ7CgkJaW50IG4gPSBudW1zLmxlbmd0aDsKCQlpbnRbXSBwcmVTdW0gPSBuZXcgaW50W24gKyAxXTsKCQkgCgkJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewoJCQlwcmVTdW1baV0gPSBudW1zW2kgLSAxXSArIHByZVN1bVtpLTFdOwoJCX0KCQkKCQlIYXNoTWFwPEludGVnZXIsIEludGVnZXI+IG1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKCQkgCgkJaW50IGFucyA9IDA7CgkJCgkJZm9yKGludCBqID0gMDsgaiA8IG47IGorKyl7CgkJCWludCBudW0xID0gbnVtc1tqXSAtIGs7CgkJCWludCBudW0yID0gbnVtc1tqXSArIGs7CgkJCSAgCgkJCWludCBzdW0xID0gMDsKCQkJaW50IHN1bTIgPSAwOwoJCQkKCQkJCgkJCWlmKG1hcC5jb250YWluc0tleShudW0xKSl7CgkJCQlzdW0xID0gcHJlU3VtW2ogKyAxXSAtIHByZVN1bVttYXAuZ2V0KG51bTEpXTsKCQkJfQoJCQkKCQkJaWYobWFwLmNvbnRhaW5zS2V5KG51bTIpKXsKCQkJCXN1bTIgPSBwcmVTdW1baiArIDFdIC0gcHJlU3VtW21hcC5nZXQobnVtMildOwoJCQl9CgkJCQoJCQlhbnMgPSBNYXRoLm1heChhbnMsIE1hdGgubWF4KHN1bTEsIHN1bTIpKTsKCQkJCgkJCWludCBudW1iZXIgPSBudW1zW2pdOwoJCQlpbnQgaWR4ID0gajsKCQkJCgkJCWlmKG1hcC5jb250YWluc0tleShudW1iZXIpKXsKCQkJCWlmKHByZVN1bVtqICsgMV0gPCBwcmVTdW1bbWFwLmdldChudW1iZXIpICsgMV0pewoJCQkJbWFwLnB1dChudW1iZXIsIGopOwoJCQkJfQoJCQl9ZWxzZXsKCQkJCW1hcC5wdXQobnVtYmVyLCBqKTsKCQkJfQoJCX0KCQlTeXN0ZW0ub3V0LnByaW50bG4oYW5zKTsKCX0KfQ==