import java.util.*;
public class Main {
public static void main
(String[] args
) {
int[] arr = {1, 2, 3, 7, 5};
int k = 12;
int[] ans =Solve(arr, k);
System.
out.
println("Largest Length = " + ans
[0]); System.
out.
println("Smallest Length = " + ans
[1]); }
public static int[] Solve(int[] arr, int k) {
HashMap
<Integer, Integer
> HM
= new HashMap
<>(); HM.put(0, -1);
int prefix = 0;
int maxLen = 0;
for (int j = 0; j < arr.length; j++) {
prefix += arr[j];
if (HM.containsKey(prefix - k)) {
int i = HM.get(prefix - k) + 1;
int currLen = j - i + 1;
maxLen
= Math.
max(maxLen, currLen
); minLen
= Math.
min(minLen, currLen
); }
HM.putIfAbsent(prefix, j);
}
minLen = 0;
}
return new int[]{maxLen, minLen};
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoKICAgICAgICBpbnRbXSBhcnIgPSB7MSwgMiwgMywgNywgNX07CiAgICAgICAgaW50IGsgPSAxMjsKCiAgICAgICAgaW50W10gYW5zID1Tb2x2ZShhcnIsIGspOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkxhcmdlc3QgTGVuZ3RoID0gIiArIGFuc1swXSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTbWFsbGVzdCBMZW5ndGggPSAiICsgYW5zWzFdKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGludFtdIFNvbHZlKGludFtdIGFyciwgaW50IGspIHsKCQlIYXNoTWFwPEludGVnZXIsIEludGVnZXI+IEhNID0gbmV3IEhhc2hNYXA8PigpOwogICAgICAgIEhNLnB1dCgwLCAtMSk7CiAgICAgICAgaW50IHByZWZpeCA9IDA7CiAgICAgICAgaW50IG1heExlbiA9IDA7CiAgICAgICAgaW50IG1pbkxlbiA9IEludGVnZXIuTUFYX1ZBTFVFOwoKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGFyci5sZW5ndGg7IGorKykgewoKICAgICAgICAgICAgcHJlZml4ICs9IGFycltqXTsKCiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoSE0uY29udGFpbnNLZXkocHJlZml4IC0gaykpIHsKCiAgICAgICAgICAgICAgICBpbnQgaSA9IEhNLmdldChwcmVmaXggLSBrKSArIDE7IAogICAgICAgICAgICAgICAgaW50IGN1cnJMZW4gPSBqIC0gaSArIDE7CiAgICAgICAgICAgICAgICBtYXhMZW4gPSBNYXRoLm1heChtYXhMZW4sIGN1cnJMZW4pOwogICAgICAgICAgICAgICAgbWluTGVuID0gTWF0aC5taW4obWluTGVuLCBjdXJyTGVuKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBITS5wdXRJZkFic2VudChwcmVmaXgsIGopOwogICAgICAgIH0KICAgICAgICBpZiAobWluTGVuID09IEludGVnZXIuTUFYX1ZBTFVFKSB7CiAgICAgICAgICAgIG1pbkxlbiA9IDA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IGludFtde21heExlbiwgbWluTGVufTsKICAgIH0KfQo=