#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;
}