Cod sursa(job #2037921)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 12 octombrie 2017 22:55:00
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <cstdio>

using namespace std;

FILE *in,*out;

const int nmax = 5000000;
int v[1+nmax],deq[1+nmax];

int main()
{
    in = fopen("deque.in","r");
    out = fopen("deque.out","w");
    int n,k;
    fscanf(in,"%d %d",&n,&k);
    for(int i = 1;i <= n;i ++)
        fscanf(in,"%d",&v[i]);
    int i = 2;
    int st,dr;
    st = dr = 1;
    deq[1] = 1;
    long long sol = 0;
    while(i <= n)
    {
        while(st <= dr && v[i] < v[deq[dr]])
            dr --;
        deq[++dr] = i;
        if(i >= k)
            sol += 1LL * v[deq[st]];
        if(deq[dr] - deq[st] == k-1)
            st ++;
        i ++;

    }
    fprintf(out,"%lld",sol);
    return 0;
}