Cod sursa(job #1779341)

Utilizator priboiraduPriboi Radu Bogdan priboiradu Data 15 octombrie 2016 09:56:34
Problema Secventa 2 Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#include <stdlib.h>

int v[50001], s[50001];

int max( int a, int b ) {
    if ( a > b )
        return a;
    return b;
}

int main() {
    FILE *fin, *fout;
    int n, k, i, suma, smax, st, dr, j;
    fin = fopen( "secv2.in", "r" );
    fout = fopen( "secv2.out", "w" );
    fscanf( fin, "%d%d", &n, &k );
    for ( i = 1; i <= n; i++ )
        fscanf( fin, "%d", &v[i] );
    for ( i = 1; i <= n - 1; i++ )
        s[i+1] = s[i] + v[i+1];
    suma = s[k] - s[0];
    smax = suma;
    j = 1;
    for ( i = k + 1; i <= n; i++ ) {
        if ( suma + v[i] > s[i] - s[i-k] )
            suma += v[i];
        else {
            suma = s[i] - s[i-k];
            j = i - k + 1;
        }
        if ( smax < suma ) {
            smax = suma;
            st = j;
            dr = i;
        }
    }
    fprintf( fout, "%d %d %d", st, dr, smax );
    fclose( fin );
    fclose( fout );
    return 0;
}