fork(11) download
  1. #include<stdio.h>
  2.  
  3. int subArraySum(int a[], int n, int sum)
  4. {
  5. int i, s_index=0, curr_sum=a[0];
  6. for(i=1; i<n; i++)
  7. {
  8. if(curr_sum==sum)
  9. {
  10. printf("starting and ending index are: %d %d", s_index, i-1);
  11. return 1;
  12. }
  13. else if(curr_sum<sum)
  14. curr_sum=curr_sum+a[i];
  15. else
  16. {
  17. if(a[i]<0)
  18. {
  19. curr_sum=curr_sum+a[i];
  20. if(curr_sum==sum) //tricky step -> after subtracting check if this new curr_sum==sum or not
  21. {
  22. printf("starting and ending index are: %d %d", s_index, i);
  23. return 1;
  24. }
  25. }
  26. else
  27. {
  28. curr_sum=curr_sum-a[s_index];
  29. s_index=s_index+1;
  30. if(curr_sum==sum) //tricky step -> after subtracting check if this new curr_sum==sum or not
  31. {
  32. printf("starting and ending index are: %d %d", s_index, i-1);
  33. return 1;
  34. }
  35. curr_sum=curr_sum+a[i];
  36. }
  37. }
  38. }
  39. printf("No sub-array found");
  40. }
  41.  
  42. int main()
  43. {
  44. int arr[]={2, 8, 5, -7};
  45. int n = sizeof(arr)/sizeof(arr[0]);
  46. int sum = 6;
  47. subArraySum(arr, n, sum);
  48. return 0;
  49. }
  50.  
Success #stdin #stdout 0s 2252KB
stdin
Standard input is empty
stdout
starting and ending index are: 1 3