Cod sursa(job #1538700)

Utilizator sulzandreiandrei sulzandrei Data 29 noiembrie 2015 17:05:55
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int  N_MAX = 6000003;
#define foreach(i,n) for(int i = 1 ; i <= n ; i ++)
ifstream in("ssm.in");
ofstream out("ssm.out");
int  sum[N_MAX];
int  v[N_MAX];
int main()
{
    int n,x;
    in>>n;
    sum[0] = 0;
    foreach(i,n)
    {
        in>>v[i];
        sum[i] = sum[i-1] + v[i];
    }
    int position_max_sum_left = 1,position_max_sum_right  =1;
    int value_max_sum = v[1];
    int minimum_sum_index = 1;
    int minimum_sum = sum[1];
    for(int i = 2 ; i <= n ;  i++)
    {

        if( sum[i] - minimum_sum > value_max_sum)
        {
            value_max_sum = sum[i] - minimum_sum ;
            position_max_sum_left = minimum_sum_index+1;
            position_max_sum_right = i;
        }
        if( sum[i] < minimum_sum)
        {
            minimum_sum = sum[i];
            minimum_sum_index = i;
        }
    }

    out<<value_max_sum<<" "<<position_max_sum_left<<" "<<position_max_sum_right;
    return 0;
}