xxxxxxxxxx
#include <iostream>
using namespace std;
int main()
{
int arrayLen, totalSum;
int arr[20];
//input
cin >> arrayLen >> totalSum;
for (int i = 0; i < arrayLen; i++)
{
cin >> arr[i];
}
//algo
// j => Loop iterator
int i = 0, j = 0, start = -1, end = -1, sum = 0;
while (j < arrayLen && sum + arr[j] <= totalSum)
{
sum += arr[j];
j++;
} // after this loop sum is either greater than or equal to totalSum
// If sum is equal
if (sum == totalSum)
{
cout << i + 1 << " " << j << endl;
return 0;
}
while (j < arrayLen)
{
sum += arr[j];
while (sum > totalSum)
{
sum -= arr[i];
i++;
}
if (sum == totalSum) //Store values
{
start = i + 1;
end = j + 1;
break;
}
j++;
}
cout << start <<" "<< end;
return 0;
}
xxxxxxxxxx
/*
Geeks For Geeks
link problem: https://practice.geeksforgeeks.org/problems/subarray-with-given-sum-1587115621/1/?page=1&difficulty[]=0&status[]=unsolved&sortBy=submissions#
*/
class Solution
{
public:
//Function to find a continuous sub-array which adds up to a given number.
vector<int> subarraySum(int arr[], int n, long long s)
{
// Your code here
vector<int> ans;
int sum = 0;
for (int i = 0; i < n; i++)
{
sum = 0;
for (int j = i; j < n; j++)
{
sum += arr[j];
if (sum == s)
{
ans.push_back(i + 1);
ans.push_back(j + 1);
return ans;
}
else if (sum > s)
{
break;
}
else
{
continue;
}
}
}
ans.push_back(-1);
return ans;
}
};