Pagini recente » Cod sursa (job #1432803) | Cod sursa (job #2562685) | Cod sursa (job #2057704) | Cod sursa (job #2227654) | Cod sursa (job #2157731)
#include <iostream>
#include <fstream>
#include <climits>
#define dMAX 6000001
using namespace std;
int n;
int arr[dMAX];
ifstream fin("ssm.in");
ofstream fout("ssm.out");
/// Kadane in O(n) spatiu
void Kadane() {
int maximum = -int(2e9);
int minimum = 0, index, l, r;
for (unsigned int i = 1; i <= n; i++) {
arr[i] += arr[i - 1];
if (maximum < arr[i] - minimum) {
maximum = arr[i] - minimum;
l = index + 1, r = i;
}
if (minimum > arr[i]) {
minimum = arr[i];
index = i;
}
}
fout << maximum << " " << l << " " << r;
}
int main()
{
unsigned int i, j;
fin >> n;
for (i = 1; i <= n; i++) {
fin >> arr[i];
}
Kadane();
return 0;
}