Cod sursa(job #1315631)
Utilizator | FMI - Dan Nema priestnoob | Data | 12 ianuarie 2015 22:43:44 |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.55 kb |
#include<stdio.h>
using namespace std;
#define nmax 5000005
int n,k,v[nmax],f,b,deq[nmax];
long long s;
void citire()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i) scanf("%d",&v[i]);
}
void solve()
{
f=1,b=0;
for(int i=1;i<=n;++i)
{
while(f<=b && v[i]<=v[deq[b]] ) b--;
deq[++b]=i;
if(deq[f]==i-k) f++;
if(i>=k) s+=v[deq[f]];
}
printf("%lld",s);
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
citire();
solve();
}