Cod sursa(job #1199962)

Utilizator zaharia_horiaZaharia Horia zaharia_horia Data 21 iunie 2014 12:57:39
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#define MAX       50001

long S[MAX];

int main()
{
    long n, k, i;
    int x;
    int res;
    FILE *f, *g;

    f = fopen( "secv2.in", "rt" );

    res = fscanf( f, "%ld %ld", &n, &k );

    S[0] = 0;
    for( i=1; i<=n; i++ ) {
        res = fscanf( f, "%d", &x );
        S[i] = S[i-1] + x;
    }
    fclose( f );

    long max;
    long p, u, sum, sum1, sum2, start, finish;

    // Prima secventa
    start = p = 1;
    finish = u = k;
    max = S[k];
    sum = max;

    for( i=k+1; i<=n; i++ ) {
        sum1 = S[i] - S[i-k];
        sum2 = sum + S[i] - S[i-1];

        if( sum1 > sum2 ) {
            p = i-k+1;
            u = i;
            sum = sum1;
        }
        else {
            sum = sum2;
            u = i;
        }

        if( sum > max ) {
            max = sum;
            start = p;
            finish = u;
        }
    }

    g = fopen( "secv2.out", "wt" );
        fprintf( g, "%ld %ld %ld\n", start, finish, max );
    fclose( g );
    return 0;
}