Cod sursa(job #274053)

Utilizator recviemAlexandru Pana recviem Data 9 martie 2009 13:02:24
Problema Subsecventa de suma maxima Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
#include <iostream>
using namespace std;

int n;
int s[6000001];

#define FOR(i,b,c) for (int i = (b); i<(c); i++)
#define abs(a) (a<0)?-a:a

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

	fin >> n;
	FOR(i,0,n)
		fin >> s[i];

	int min = 0, sum= 0, rez = s[0], minS = (1<<30), a=0, b=0;
	FOR(i,0,n){
		if (sum + s[i] < minS){
			min = i;
			minS = sum;
		}
		sum += s[i];
		if (sum - minS > rez || (sum - minS == rez && abs(i-min) < abs(a-b)) ){
			rez = sum - minS;
			a = min;
			b = i;
		}
	}

	fout << rez << " " << a+1 << " " << b+1;
	fout.close(), fin.close();
}

int main() {
	mainLoop();
	return 0;
}