Cod sursa(job #2691742)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 29 decembrie 2020 19:25:56
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
int n, poz, st, k, x;
struct elemente{
    int val, poz;
} q[ 5000000 ];

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