Cod sursa(job #2149430)

Utilizator kywyPApescu tiGEriu kywy Data 2 martie 2018 17:08:48
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstdio>
#include<algorithm>
#define N 6000007
using namespace std;
int d[N];
int main()
{
    FILE* in = fopen("ssm.in", "r"); ///probleme
    FILE* out = fopen("ssm.out", "w");
    int n, a, maxnr = 0, inc = 1, sf, tmp = 1;
    fscanf(in, "%d", &n);
    int maxx=-2147483648, poz;
    for(int i = 1; i <= n; ++i)
    {
        fscanf(in, "%d", &a);
        if(a>maxx)
        {
            maxx=a;
            poz=i;
        }
        if(d[i - 1] + a < 0)
        {
            d[i] = 0;
            tmp = i + 1;
        }
        else d[i] = d[i - 1] + a;
        int nr = max(d[i - 1], d[i]);
        if(maxnr < nr)
        {
            maxnr = nr;
            sf = i;
            inc = tmp;
        }
    }
    if(maxx>=0) fprintf(out, "%d %d %d", maxnr, inc, sf);
    else fprintf(out, "%d %d %d", maxx, poz, poz);
}