```
#include <iostream>
#include<map>
using namespace std;
int printSubarray(int arr[], int n , int givenSum)
{
int sum=0;
map<int,int> MAP;
int maxI=0;
for(int i=0;i<n;i++)
{
sum += arr[i];
if(MAP.count(sum-givenSum)){//0 and 1//in case of map
cout<<"index"<<MAP[sum-givenSum]+1<<":_"<<i<<endl;
maxI=max(maxI,i-MAP[sum-givenSum]);
}
else if( sum == givenSum ){
cout<<"index"<<"0"<<":++"<<i<<endl;
maxI=max(maxI,i+1);
}
else
MAP[sum] = i;
}
return maxI;
}
int main()
{
int arr[]={4,-2,3,0,0,7,1,-3,0,0,8,-3,0,0,0,0,1,-1};
int n = sizeof(arr)/sizeof(arr[0]);
int k=5;
cout<<"maxI"<<printZeroSumSubarray(arr,n,k );
return 0;
}
O/P :
index0:++2
index0:++3
index0:++4
index7:_10
index10:_11
index10:_12
index10:_13
index10:_14
index10:_15
index10:_17
maxI8
I am not able to handle the case from pos 5 to 9 as it is also come into subarray with sum K
Can anyone help in this
```