Cod sursa(job #2924442)

Utilizator andreipirjol5Andrei Pirjol andreipirjol5 Data 2 octombrie 2022 17:01:19
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>

using namespace std;
FILE *fin , *fout;

#define NMAX 6000000
int v[NMAX + 5] , dp[NMAX + 5] , maxim;

int main()
{
    fin = fopen("ssm.in" , "r");
    fout = fopen("ssm.out" , "w");

    int n;
    fscanf(fin , "%d" , &n);

    int i;
    for(i = 1; i <= n; i++)
        fscanf(fin , "%d" , &v[i]);

    for(i = 1; i <= n; i++)
    {
        if(dp[i - 1] < 0)
            dp[i] = v[i];
        else dp[i] = dp[i - 1] + v[i];
    }

    int ind;
    for(i = 1; i <= n; i++)
        if(maxim < dp[i])
        {
            maxim = dp[i];
            ind = i;
        }

    fprintf(fout , "%d " , maxim);

    i = ind;
    while(i >= 1 and dp[i] >= 0)
        i--;

    fprintf(fout , "%d %d" , i + 1, ind);

    fclose(fin);
    fclose(fout);
    return 0;
}