Cod sursa(job #1687697)

Utilizator TeodorCotetCotet Teodor TeodorCotet Data 13 aprilie 2016 00:35:28
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

const int NMAX = 6000009;

int n; int v[NMAX]; 

int smax[NMAX]; int st[NMAX];

int main() {

	fin >> n;

	for(int i = 1; i <= n; ++i)
		fin >> v[i];

	smax[0] = -0x3f3f3f3f;

	for(int i = 1; i <= n; ++i) {
		if( v[i] + smax[i - 1] < v[i] ) {
			st[i] = i;
			smax[i] = v[i];

		} else {

			smax[i] = smax[i - 1] + v[i];
			st[i] = st[i - 1];
		}
	}
	int maxi = 1;

	for(int i = 1; i <= n ; ++i)
		if(smax[maxi] < smax[i])
			maxi = i;

	fout << smax[maxi] << ' ' << st[maxi] << ' ' << maxi << '\n'; 
	return 0;
}