Cod sursa(job #634891)

Utilizator johnny2008Diaconu Ion johnny2008 Data 17 noiembrie 2011 20:15:24
Problema Subsecventa de suma maxima Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
#include<iostream>
using namespace std;
int n,i,j;
int s[6000001];
int best[6000001][3];
int maxi=-99999,a,b;

int main(){
	ifstream f("ssm.in");
	ofstream g("ssm.out");
	f>>n;
	for(i=1;i<=n;i++){
		f>>s[i];
		s[i]=s[i-1]+s[i];
	}
	best[1][0]=s[1];
	best[1][1]=1;
	best[1][2]=1;
	for(i=2;i<=n;i++){
		maxi=-99999;
		for(j=1;j<=i;j++){
			if(maxi<s[i]-s[j]){
				maxi=s[i]-s[j];
				a=j+1;
				b=i;
			}
		}
		if(maxi<best[i-1][0]){
			maxi=best[i-1][0];
			a=best[i-1][1];
			b=best[i-1][2];
			
		}
		best[i][0]=maxi;
		best[i][1]=a;
		best[i][2]=b;
		
	}
	
	g<<best[n][0]<<" "<<best[n][1]<<" "<<best[n][2]<<'\n';
	return 0;
}