#include <stdio.h>
#include <math.h>
int maxSubArrayLenEqualsToK(int arr[], int size, int k) {
int max_len = 0;
int sum = 0;
int leftidx = 0;
for (int rightidx = 0; rightidx < size; rightidx++) {
sum += arr[rightidx];
while (sum > k && leftidx < rightidx) {
sum -= arr[leftidx];
leftidx++;
}
max_len = fmax(max_len, rightidx - leftidx + 1);
}
return max_len;
}
int main() {
int arr[] = {1, -1, 5, -2, -3, 2, 3, 3};
int k = 3;
int size = sizeof(arr) / sizeof(arr[0]);
// 1, -1, 5, -2 = 3 (4)
// 5, -2 = 3 (2)
// -2, -3, 2, 3, 3 = 3 (5)
printf("%d", maxSubArrayLenEqualsToK(arr, size, k));
return 0;
}
/*
run:
5
*/