#include <iostream>
#include<bits/stdc++.h>
#define fo(i,start,end) for(int i=start;i<end;i++)
using namespace std;
int main() {
int arr[] = {3,1,3,-2,2};
int k = 4;
int n = 5;
//find the largest and smallest length of subarray with sum = K
// int mini = INT_MAX;
int maxi = INT_MIN;
int sum = 0;
unordered_map<int,int>mp;
mp[0] = -1;
fo(i,0,n){
sum += arr[i];
int query = sum - k;
if(mp.find(query) != mp.end()){
maxi = max(maxi,i-mp[query]);
}
if(mp.find(sum) == mp.end()){
mp[sum] = i;
}
}
cout<<"largest subarray length with sum "<<k<<" is "<<maxi<<endl;
// cout<<"smallest subarray length with sum "<<k<<" is "<<mini<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIGZvKGksc3RhcnQsZW5kKSBmb3IoaW50IGk9c3RhcnQ7aTxlbmQ7aSsrKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmludCBtYWluKCkgewoJaW50IGFycltdID0gezMsMSwzLC0yLDJ9OwoJaW50IGsgPSA0OwoJaW50IG4gPSA1OwoJLy9maW5kIHRoZSBsYXJnZXN0IGFuZCBzbWFsbGVzdCBsZW5ndGggb2Ygc3ViYXJyYXkgd2l0aCBzdW0gPSBLCgkvLyBpbnQgbWluaSA9IElOVF9NQVg7CglpbnQgbWF4aSA9IElOVF9NSU47CglpbnQgc3VtID0gMDsKCXVub3JkZXJlZF9tYXA8aW50LGludD5tcDsKCW1wWzBdID0gLTE7CglmbyhpLDAsbil7CgkJc3VtICs9IGFycltpXTsKCQlpbnQgcXVlcnkgPSBzdW0gLSBrOwoJCWlmKG1wLmZpbmQocXVlcnkpICE9IG1wLmVuZCgpKXsKCQkgbWF4aSA9IG1heChtYXhpLGktbXBbcXVlcnldKTsKCQl9CgkJaWYobXAuZmluZChzdW0pID09IG1wLmVuZCgpKXsKCQkJbXBbc3VtXSA9IGk7CgkJfQoJfQoJCWNvdXQ8PCJsYXJnZXN0IHN1YmFycmF5IGxlbmd0aCB3aXRoIHN1bSAiPDxrPDwiIGlzICI8PG1heGk8PGVuZGw7CgkJLy8gY291dDw8InNtYWxsZXN0IHN1YmFycmF5IGxlbmd0aCB3aXRoIHN1bSAiPDxrPDwiIGlzICI8PG1pbmk8PGVuZGw7CglyZXR1cm4gMDsKfQ==