Cod sursa(job #3170803)

Utilizator vladimir.gavris.1Gavris Mihai Vladimir vladimir.gavris.1 Data 18 noiembrie 2023 10:06:32
Problema Deque Scor 60
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#include <stdlib.h>

#define MAXN 5000000

int coada[ MAXN ], a[ MAXN ], left, right = -1;


int main()
{
    FILE *fin, *fout;
    int n, k, i, j, x;
    long long suma = 0;
    fin = fopen( "deque.in", "r" );

    fscanf( fin, "%d%d", &n, &k );
    for( i = 0; i < n; i++ )
    {
        fscanf( fin, "%d", &a[ i ] );
    }
    fclose( fin );

    for( i = 0; i < n; i++ )
    {
        while( a[ i ] <= a[ coada[ right ] ] && left <= right )
        {
            right--;
        }

        while( coada[ left ] <= i - k && left <= right )
        {
            left++;
        }

        right++;
        coada[ right ] = i;
        if( i >= k - 1 )
        {
            suma += a[ coada[ left ] ];
        }
    }

    fout = fopen( "deque.out", "w" );
    fprintf( fout, "%lld", suma );
    fclose( fout );

    return 0;
}