Cod sursa(job #3184852)

Utilizator razviOKPopan Razvan Calin razviOK Data 17 decembrie 2023 11:17:16
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdlib.h>
#include <stdio.h>

int main() {

    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);

    int n,k,rez=0;
    scanf("%d",&n);
    scanf("%d",&k);
    int *dequeue=(int *) malloc(sizeof(int)*k);
    int *arr=(int *) malloc(sizeof(int)*n);
    int start_index=0,end_index=0;
    for(int i=0;i<n;i++){

        scanf("%d",&arr[i]);

        if(i!=0)
        while(arr[i]<=arr[dequeue[end_index-1]] && end_index>start_index)
            end_index--;

        dequeue[end_index++]=i;

        if(dequeue[start_index]<i-k+1)
            start_index++;

        if(i>=k-1)
            rez+=arr[dequeue[start_index]];
    }

    printf("%d",rez);
   free(dequeue);
    free(arr);

    return 0;
}