fork download
  1. /*Write a program to take an integer array arr as input. The task is to find the maximum sum of any contiguous
  2. subarray using Kadane's algorithm. Print the maximum sum as output. If all elements are negative, print the
  3. largest (least negative) element.*/
  4. #include <stdio.h>
  5.  
  6. int main() {
  7. int n;
  8. scanf("%d", &n);
  9.  
  10. int arr[n];
  11. for (int i = 0; i < n; i++)
  12. scanf("%d", &arr[i]);
  13.  
  14. int maxEnding = arr[0];
  15. int maxSoFar = arr[0];
  16.  
  17. for (int i = 1; i < n; i++) {
  18. // Kadane's main step
  19. if (maxEnding + arr[i] > arr[i])
  20. maxEnding = maxEnding + arr[i];
  21. else
  22. maxEnding = arr[i];
  23.  
  24. if (maxEnding > maxSoFar)
  25. maxSoFar = maxEnding;
  26. }
  27.  
  28. printf("%d", maxSoFar);
  29. return 0;
  30. }
  31.  
Success #stdin #stdout 0s 5320KB
stdin
9
-2 1 -3 4 -1 2 1 -5 4
stdout
6