Cod sursa(job #1098184)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 4 februarie 2014 16:50:03
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#include <deque>
using namespace std;

deque <int> D;
deque <int> P;

int main () {
    FILE *f, *g;
    f = fopen( "deque.in", "r" );
    g = fopen( "deque.out", "w" );

    int n, x, k;
    long long sum = 0;

    fscanf( f, "%d%d%d", &n, &k, &x );

    D.push_back(x);
    P.push_back(1);
    if( k == 1 )
        sum += x;

    for( int i = 2 ; i <= n ; ++i ) {
        fscanf( f, "%d", &x );
        if( i - P.front() == k ) {
            D.pop_front();
            P.pop_front();
        }
        while( !D.empty() && x < D.back() ) {
            D.pop_back();
            P.pop_back();
        }
        D.push_back(x);
        P.push_back(i);
        if( i >= k ) {
            sum += D.front();
            printf( "%d ", D.front() );
        }
    }

    fprintf( g, "%lld\n", sum );

    fclose( f );
    fclose( g );

    return 0;
}