![]() |
find the length of the longest Sub-Array with the sum of the elements equal to the given value K. |
Given an array containing N integers and an integer K. Your task is to find the length of the longest Sub-Array with the sum of the elements equal to the given value K.
Example:
Input:
3
6 15
10 5 2 7 1 9
6 -5
-5 8 -14 2 4 12
3 6
-1 2 3
Output:
4
5
0
Input : arr[] = { 10, 5, 2, 7, 1, 9 },
K = 15
Output : 4
The sub-array is {5, 2, 7, 1}
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n, m, sum = 0, cnt = 0, f = 0;
cin >> n >> m;
int a[n];
unordered_map < int, int > mp;
mp[0] = -1;
for (int i = 0; i < n; ++i) {
cin >> a[i];
sum += a[i];
if (mp.find(sum - m) != mp.end()) {
cnt = max(cnt, i - mp[sum - m]);
}
if (mp.find(sum) == mp.end()) {
mp[sum] = i;
}
}
cout << cnt << endl;
}
return 0;
}