#include<stdio.h>
int subArraySum(int a[], int n, int sum)
{
int i, s_index=0, curr_sum=a[0];
for(i=1; i<n; i++)
{
if(curr_sum==sum)
{
printf("starting and ending index are: %d %d", s_index
, i
-1); return 1;
}
else if(curr_sum<sum)
curr_sum=curr_sum+a[i];
else
{
curr_sum=curr_sum-a[s_index];
s_index=s_index+1;
if(curr_sum==sum) //tricky step -> after subtracting check if this new curr_sum==sum or not
{
printf("starting and ending index are: %d %d", s_index
, i
-1); return 1;
}
curr_sum=curr_sum+a[i];
}
}
}
int main()
{
int arr[]={1, 4, 0, 0, 3, 10, 5};
int n = sizeof(arr)/sizeof(arr[0]);
int sum = 7;
subArraySum(arr, n, sum);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KCmludCBzdWJBcnJheVN1bShpbnQgYVtdLCBpbnQgbiwgaW50IHN1bSkKewogICAgIGludCBpLCBzX2luZGV4PTAsIGN1cnJfc3VtPWFbMF07CiAgICAgZm9yKGk9MTsgaTxuOyBpKyspCiAgICAgewogICAgICAgICAgICAgIGlmKGN1cnJfc3VtPT1zdW0pCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJzdGFydGluZyBhbmQgZW5kaW5nIGluZGV4IGFyZTogJWQgJWQiLCBzX2luZGV4LCBpLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgaWYoY3Vycl9zdW08c3VtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3N1bT1jdXJyX3N1bSthW2ldOwogICAgICAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBjdXJyX3N1bT1jdXJyX3N1bS1hW3NfaW5kZXhdOwogICAgICAgICAgICAgICAgICBzX2luZGV4PXNfaW5kZXgrMTsKICAgICAgICAgICAgICAgICAgaWYoY3Vycl9zdW09PXN1bSkgICAgICAgICAgICAgLy90cmlja3kgc3RlcCAgLT4gYWZ0ZXIgc3VidHJhY3RpbmcgY2hlY2sgaWYgdGhpcyBuZXcgY3Vycl9zdW09PXN1bSBvciBub3QKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJzdGFydGluZyBhbmQgZW5kaW5nIGluZGV4IGFyZTogJWQgJWQiLCBzX2luZGV4LCBpLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgIGN1cnJfc3VtPWN1cnJfc3VtK2FbaV07CiAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgfQogICAgIHByaW50ZigiTm8gc3ViLWFycmF5IGZvdW5kIik7ICAgICAKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgYXJyW109ezEsIDQsIDAsIDAsIDMsIDEwLCA1fTsKICAgIGludCBuID0gc2l6ZW9mKGFycikvc2l6ZW9mKGFyclswXSk7CiAgICBpbnQgc3VtID0gNzsKICAgIHN1YkFycmF5U3VtKGFyciwgbiwgc3VtKTsKICAgIGdldGNoYXIoKTsKICAgIHJldHVybiAwOwp9Cg==