Pagini recente » Cod sursa (job #1990424) | Cod sursa (job #242164) | Cod sursa (job #723778) | Cod sursa (job #2776351) | Cod sursa (job #1598624)
//============================================================================
// Name : SubsecventaSumaMaxima.cpp
// Author : Teodor Cotet
// Version :
// Copyright : Your copyright notice
// Description : O(N), Ansi-style
//============================================================================
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
const int NMAX = 6000000;
int n;
int v[NMAX + 1];
int sum[NMAX + 1];
int sol = -(1 << 30);
int main() {
fin >> n;
for(int i = 1; i <= n; ++i) {
fin >> v[i];
sum[i] = sum[i - 1] + v[i];
}
int minIndex = 0;
int leftIndex = 0;
int rightIndex = 0;
for(int i = 1; i <= n ;++i) {
if(sol < sum[i] - sum[minIndex]) {
sol = sum[i] - sum[minIndex];
leftIndex = minIndex + 1;
rightIndex = i;
}
if(sum[minIndex] > sum[i])
minIndex = i;
}
fout << sol << " " << leftIndex << " " << rightIndex << '\n';
return 0;
}