Pagini recente » Cod sursa (job #166617) | Cod sursa (job #2072637) | Cod sursa (job #1210151) | Cod sursa (job #976719) | Cod sursa (job #1044589)
#include<iostream>
#include<cstdio>
using namespace std;
int dq[5000005], v[5000005];
int main()
{
FILE *fin, *fout;
fin=fopen("deque.in","r");
fout=fopen("deque.out","w");
int n, i, k, prim, ultim;
long long s=0;
fscanf(fin, "%d %d", &n, &k);
for(i=0; i<n; i++)
fscanf(fin, "%d", &v[i]);
prim=1;
ultim=0;
ultim++;
dq[ultim]=0;
for(i=1; i<n; i++)
{
while(v[i]<v[dq[ultim]] && prim<=ultim)
{
ultim--;
}
ultim++;
dq[ultim]=i;
if(dq[prim]==i-k)
prim++;
if(i>=k-1)
s+=v[dq[prim]];
}
fprintf(fout, "%lld", s);
}