Cod sursa(job #274240)

Utilizator recviemAlexandru Pana recviem Data 9 martie 2009 15:48:46
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 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)?(-1*a):(a))

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

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

	int min = 0, a=0, b=0;
	long sum = 0, minS = 0, rez = s[0];

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

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

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