Cod sursa(job #1511259)

Utilizator jimcarterJim Carter jimcarter Data 26 octombrie 2015 11:53:14
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
#include <algorithm>
using namespace std;

FILE *f = fopen ( "ssm.in" , "r" ) , *g = fopen ( "ssm.out" , "w" );

int N , number , i , left , pos , right;
long long maxim , sum;

void read()
{
    fscanf ( f , "%d" , &N );

    fscanf ( f , "%d" , &number );

    sum = number; maxim = number; left = 1; right = 1;

    for ( i = 2 ; i <= N ; i ++ )
    {
        fscanf ( f , "%d" , &number );
        sum += number;
        if ( sum < 0 )
        {
            if ( number > maxim )
            {
                maxim = number;
                pos = i;
            }
            sum = 0;
            left = i + 1;
        }
        else
            if ( sum > maxim )
            {
                maxim = sum;
                right = i;
            }
    }
    if ( maxim < 0 )
        left = right = pos;
}

int main()
{
    read();
    //print
    fprintf ( g , "%lld %d %d\n" , maxim , left , right );
    return 0;
}