Cod sursa(job #2018455)

Utilizator Horia14Horia Banciu Horia14 Data 4 septembrie 2017 22:13:46
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<cstdio>
#define MAX_N 5000000
using namespace std;

int v[MAX_N+1], deck[MAX_N+1], n, k;
long long sum;

int main()
{
    int Front, Back, i;
    FILE *fin, *fout;
    fin = fopen("deque.in","r");
    fout = fopen("deque.out","w");
    fscanf(fin,"%d%d",&n,&k);
    for(i=1; i<=n; i++)
        fscanf(fin,"%d",&v[i]);
    Front = 1; Back = 0;
    for(i=1; i<=n; i++)
    {
        while(Front <= Back && v[i] <= v[deck[Back]])
            Back--;
        deck[++Back] = i;
        if(deck[Front] == i - k)
            Front++;
        if(i >= k)
            sum += v[deck[Front]];
    }
    fprintf(fout,"%lld\n",sum);
    fclose(fin);
    fclose(fout);
    return 0;
}