Cod sursa(job #2487335)

Utilizator daria_stoianStoian Daria Alexandra daria_stoian Data 4 noiembrie 2019 16:15:42
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#define N 5000000
int v[N], dq[N];

using namespace std;

int main(){
    FILE *fin, *fout;
    fin = fopen( "deque.in", "r" );
    fout = fopen( "deque.out", "w" );
    int n, k, i, st, dr;
    long long sum;
    fscanf( fin, "%d%d", &n, &k );
    st = sum = 0;
    dr = -1;
    for ( i = 0; i < n; i ++ ){
        fscanf( fin, "%d", &v[i] );
        if ( dq[st] == i - k )
            st ++;
        while ( st <= dr &&  v[i] <= v[ dq[dr] ] ){
            dr --;
        }
        dq[++dr] = i;
        if ( i >= k - 1 ){
            sum += v[dq[st]];
        }
    }
    fprintf( fout, "%lld", sum );
    fclose( fin );
    fclose( fout );
    return 0;
}