Cod sursa(job #965839)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 24 iunie 2013 20:16:54
Problema Subsecventa de suma maxima Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
using namespace std;
#define NMax 1000000
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 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 long int pozInceput;
    for (long long int j=pozFinal; best[j] - best[j-1] == v[j] ; j--)
    {
        pozInceput = j-1;   
    }
 
    fprintf(g, "%lld %lld %lld", bestSum, pozInceput, pozFinal);
    fclose(f);
    fclose(g);
    return 0;
}