Pagini recente » Cod sursa (job #497396) | Cod sursa (job #1140358) | Cod sursa (job #1182653) | Cod sursa (job #1422891) | Cod sursa (job #257376)
Cod sursa(job #257376)
#include<stdio.h>
#define N 5000005
#define MAX 10000003
int n,k,a[N],dq[N],p,u;
void citire()
{
int i;
scanf("%d%d",&n,&k);
for (i=0;i<n;++i)
scanf("%d",&a[i]);
}
void dreapta(int x)
{
while (u!=p&&a[dq[u-1]]>=a[x])
--u;
dq[u++]=x;
}
void stanga(int x)
{
if (x-dq[p]>=k)
++p;
}
void afisare(int x[N])
{
int i;
for(i=0;i<n;++i)
printf("%d ",x[i]);
}
void solve()
{
int min=MAX,i;
long long s;
citire();
// afisare(a);
dq[u++]=0;
for (i=1;i<k;++i)
dreapta(i);
s=a[dq[p]];
// printf("%d %d\n",s,a[dq[p]]);
for (i=k;i<n;++i)
{
stanga(i);
dreapta(i);
s+=a[dq[p]];
// printf("%d %d %d\n",s,dq[p],a[dq[p]]);
}
printf("%lld\n",s);
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
solve();
return 0;
}