Cod sursa(job #1027251)

Utilizator redls_95Nechita Laura redls_95 Data 12 noiembrie 2013 17:27:55
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <cstdio>
using namespace std;
int v[5000002],dq[5000002];
int k,st=1,dr;
inline void stanga(int i)
{
    if (i-dq[st]==k) st++;
}
inline void dreapta(int i)
{
    while(st<=dr &&v[i]<=v[dq[dr]])
    {
        --dr;
    }
}
int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    int n,i,j;
    long long s=0;
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++) scanf("%d",&v[i]);
    for(i=1;i<=n;i++)
    {
        if (i>k) stanga(i);
        dreapta(i);
        dq[++dr]=i;
        if (i>=k) s+=v[dq[st]];

    }
    printf("%lld",s);
    return 0;
}