Cod sursa(job #1128567)

Utilizator horatiu13Horatiu horatiu13 Data 27 februarie 2014 17:40:25
Problema Subsecventa de suma maxima Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <cstdio>
#define Nmax 6000002
using namespace std;

FILE *fi = fopen("ssm.in", "r");
FILE *fo = fopen("ssm.out", "w");

int n;
int v[Nmax];
int s[Nmax];
int max = 1<<31;
int lmin = ~(1<<31);
int p1;
int p2;

int main()
{
	fscanf(fi, "%d", &n);
	for (int i = 1; i<=n; i++)
	{
		fscanf(fi, "%d", &v[i]);
		s[i] = s[i-1] + v[i];
	}
	for (int i = n; i > 1; i--)
		for (int j = i-1; j>=1; j--)
			if (max < s[i] - s[j] || (max == s[i] - s[j] && i < j) || (max == s[i] - s[j] && i == j && i-j < lmin))
			{
				p1 = j+1;
				p2 = i;
				max = s[i] - s[j];
				lmin = i-j;
			}
			
	
	fprintf(fo, "%d %d %d\n", max, p1, p2);
	return 0;
}