Cod sursa(job #797063)

Utilizator bogfodorBogdan Fodor bogfodor Data 13 octombrie 2012 12:52:18
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#define Lmax 5000000

using namespace std;

int n,k;
long long s=0;

FILE *fin=freopen("deque.in","r",stdin);
FILE *fout=freopen("deque.out","w",stdout);

struct coada
{
    int x;
    int p;
}c[Lmax];

void solve()
{
    int sf=0;
    int inc=0;
    for(int i=0;i<n;i++)
    {
        int x;
        scanf("%d",&x);
        while(c[sf-1].x>x && sf>inc)
            sf--;
        c[sf].x=x;
        c[sf++].p=i;
        if(c[inc].p<=i-k)
            inc++;
        if(i>=k-1)
            s+=c[inc].x;
    }
}

int main()
{
    scanf("%d %d", &n,&k);
    solve();
    printf("%lld\n",s);
    return 0;
}