Cod sursa(job #2981197)

Utilizator comanandreiComan Andrei comanandrei Data 17 februarie 2023 15:18:36
Problema Deque Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <stdio.h>

#define MAXN 5000000
#define INFINIT -10000001

int coada[MAXN+1], poz[MAXN+1];

int main()
{
    FILE *fin, *fout;
    int n, k, index, element, primul, ultim;
    long long suma;
    fin=fopen("deque.in", "r");
    fscanf(fin, "%d%d", &n, &k);
    coada[0]=INFINIT;
    primul=1;
    ultim=1;
    for(index=1;index<=k;index++){
        fscanf(fin, "%d", &element);
        while(element<coada[ultim-1]){
            ultim--;
        }
        coada[ultim]=element;
        poz[ultim]=index;
        ultim++;
    }
    suma=coada[primul];
    while(index<=n){
        fscanf(fin, "%d", &element);
        if(poz[primul]==index-k){
            coada[primul]=INFINIT;
            primul++;
        }
        while(element<coada[ultim-1]){
            ultim--;
        }
        coada[ultim]=element;
        poz[ultim]=index;
        ultim++;
        suma+=coada[primul];
        index++;
    }
    fclose(fin);
    fout=fopen("deque.out", "w");
    fprintf(fout, "%lld", suma);
    fclose(fout);
    return 0;
}