Cod sursa(job #2288391)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 23 noiembrie 2018 12:11:45
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>

#include <stdlib.h>

#define NMAX 5000000



int d[1 + NMAX];

int v[1 + NMAX];



int main() {
    int n, k;
    FILE *f = fopen ( "secventa.in", "r" );
    fscanf ( f, "%d%d", &n, &k );
    for ( int i = 0; i < n; ++i )
        fscanf ( f, "%d", &v[i] );
    fclose ( f );

    int st = 0, dr = -1;
    long long s = 0;
    for ( int i = 0; i < n; ++i ) {
        if ( st <= dr && d[st] == i - k )
            ++st;
        while ( st <= dr && v[i] <= v[d[dr]] )
            --dr;
        d[++dr] = i;
        if ( i >= k - 1 )
            s += v[d[st]];
    }

    f = fopen ( "secventa.out", "w" );
    fprintf ( f, "%lld", s );
    fclose ( f );

    return 0;

}