Pagini recente » Cod sursa (job #959578) | Cod sursa (job #959573) | Cod sursa (job #228277) | Cod sursa (job #188368) | Cod sursa (job #374541)
Cod sursa(job #374541)
#include<cstdio>
int n,k,st,dr,j,min;
int dq[5000001];
int v[5000001];
long long sum;
inline void stanga(int i)
{
if (dq[st]==i-k)
++st;
}
void dreapta (int i)
{
while(st<=dr && v[i]<=v[dq[dr]] )
--dr;
dq[++dr]=i;
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d%d", &n, &k);
for (j=1;j<=n;j++)
scanf("%d\n", &v[j]);
st=1;
dr=0;
for (j=1;j<k;j++)
{
stanga(j);
dreapta(j);
}
for (j=k;j<=n;j++)
{
stanga(j);
dreapta(j);
sum+=(long long)(v[dq[st]]);
}
printf("%lld", sum);
return 0;
}