import java.util.*;
public class Main {
// Using 2-pointers
private static int MaxSubarray(int[] arr, int k){
int max = 0;
int left = 0, sum = 0;
for(int right = 0; right<arr.length; right++){
sum+=arr[right];
while(sum>k){
sum-=arr[left];
left++;
}
if(sum
== k
) max
= Math.
max(max,
(right
- left
+1)); }
return max;
}
public static void main
(String[] args
) { int[] arr = {1, 2, 3, 4, 5};
int k = 5;
System.
out.
println("Max subarray with sum " + k
+ ": " + MaxSubarray
(arr, k
)); }
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgLy8gVXNpbmcgMi1wb2ludGVycwogICAgcHJpdmF0ZSBzdGF0aWMgaW50IE1heFN1YmFycmF5KGludFtdIGFyciwgaW50IGspewogICAgCWludCBtYXggPSAwOwogICAgCWludCBsZWZ0ID0gMCwgc3VtID0gMDsKICAgIAlmb3IoaW50IHJpZ2h0ID0gMDsgcmlnaHQ8YXJyLmxlbmd0aDsgcmlnaHQrKyl7CiAgICAJCXN1bSs9YXJyW3JpZ2h0XTsKICAgIAkJd2hpbGUoc3VtPmspewogICAgCQkJc3VtLT1hcnJbbGVmdF07CiAgICAJCQlsZWZ0Kys7CiAgICAJCX0KICAgIAkJaWYoc3VtID09IGspIG1heCA9IE1hdGgubWF4KG1heCwocmlnaHQgLSBsZWZ0ICsxKSk7CiAgICAJfQogICAgCXJldHVybiBtYXg7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludFtdIGFyciA9IHsxLCAyLCAzLCA0LCA1fTsKICAgICAgICBpbnQgayA9IDU7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJNYXggc3ViYXJyYXkgd2l0aCBzdW0gIiArIGsgKyAiOiAiICsgTWF4U3ViYXJyYXkoYXJyLCBrKSk7CiAgICB9Cn0K