Cod sursa(job #872982)

Utilizator petiVass Peter peti Data 6 februarie 2013 19:41:12
Problema Subsecventa de suma maxima Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
	ifstream ifs("ssm.in");
	ofstream ofs("ssm.out");

	int N;ifs>>N;
	int *m=new int[N];
    int *best=new int[N];

	for(int i=0;i<N;i++)
		ifs>>m[i];


	int maxsum=0;
	int l=0,r=0;

	best[0]=m[0];

	for(int i=1;i<N;i++){
		int tmp=best[i-1]+m[i];
		if(m[i]==tmp){
            l=r=i;
            best[i]=tmp;
        }
        else if(m[i]<tmp){
			best[i]=tmp;
			r=i;
		}
		else{
            best[i]=m[i];
			l=i;
		}
		if(best[i]>maxsum)
			maxsum=best[i];
   }
//	cout<<"l "<<l+1<<"\n";
//	cout<<"r "<<r+1<<"\n";
//	cout<<"m "<<maxsum<<"\n";
	ofs<<maxsum<<" "<<l+1<<" "<<r+1;
	return 0;
}