Cod sursa(job #942207)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 21 aprilie 2013 15:14:45
Problema Subsecventa de suma maxima Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<iostream>
#include<stdlib.h> /* qsort */
#include <stdio.h> /* printf */
#include <math.h>
#include <queue>
#include <iomanip>
#include <string>
#define NMAX 100000
using namespace std;

long long int *best, *v;
long long int n, bestSum = 0;
int main()
{
	FILE *f = fopen("ssm.in", "r");
	FILE *g = fopen("ssm.out", "w");
	fscanf(f, "%lld", &n);
	v = new long long int [n];
	best = new long long int [n];
	for (int i=1; i<=n; i++)
	{
		fscanf(f, "%lld", &v[i]);
	}
	
	bestSum = v[1];
	long int pozFinal;
	for (int i = 1; i <= n; ++ i) 
	{ 
		best[i] = v[i];
		if (best[i] < best[i-1] + v[i])     
			best[i] = best[i-1] + v[i];   
		if (bestSum < best[i])       
		{
			bestSum = best[i];
			pozFinal = i;
		}
	}
	
	long int pozInceput;
	for (int j=pozFinal; best[j] - best[j-1] == v[j] ; j--)
	{
		pozInceput = j-1;	
	}

	fprintf(g, "%lld %ld %ld", bestSum, pozInceput, pozFinal);
	fclose(f);
	fclose(g);
	return 0;
}