#include <iostream>
#include <climits>
void findMaxContiguousSubarray(int arr[], int size) {
int maxSum = INT_MIN;
int currentSum = 0;
int start = 0;
int end = 0;
int s = 0;
for (int i = 0; i < size; i++) {
currentSum += arr[i];
if (maxSum < currentSum) {
maxSum = currentSum;
start = s;
end = i;
}
if (currentSum < 0) {
currentSum = 0;
s = i + 1;
}
}
std::cout << "Maximum contiguous subarray sum: " << maxSum << std::endl;
std::cout << "Subarray elements: ";
for (int i = start; i <= end; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
int arr[] = {-2, -3, 4, -1, -2, 1, 5, -3};
int size = sizeof(arr) / sizeof(arr[0]);
findMaxContiguousSubarray(arr, size);
return 0;
}