Cod sursa(job #1000114)

Utilizator crucerucalinCalin-Cristian Cruceru crucerucalin Data 22 septembrie 2013 00:22:12
Problema Secventa 2 Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#include <stdlib.h>

#define max(a,b) (a) > (b) ? (a) : (b)

int A[50005], A_mod[50005], I[50005];
int K, N;

int main()
{
    int i, j;
    long long bestsum;
    int left, right;

    freopen("secv2.in","r",stdin);
    freopen("secv2.out","w",stdout);

    scanf("%d",&N);
    scanf("%d",&K);

    A_mod[0] = 0;

    for( i=1; i<=N; i++ ) {
        scanf("%d",&A[i]);
        A_mod[i] = max(0,A_mod[i-1]+A[i]);
        if ( !A_mod[i] ) I[i] = 1;
    }

    bestsum = 0;
    for ( i=1; i<=N; i++ ) {

        if ( I[i] ) j = i;

        if ( A_mod[i] > bestsum && i-j-1 >= K) {
            bestsum = A_mod[i];
            left = j+1;
            right = i;
        }
    }

    printf("%d %d %lld\n",left,right,bestsum);
    return 0;
}