Cod sursa(job #1598624)

Utilizator TeodorCotetCotet Teodor TeodorCotet Data 13 februarie 2016 02:23:56
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
//============================================================================
// 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;
}