Pagini recente » Cod sursa (job #3225416) | Cod sursa (job #504713)
Cod sursa(job #504713)
#include <cstdio>
#define nmax 5000010
using namespace std;
FILE *fin=fopen("deque.in", "r");
FILE *fout=fopen("deque.out", "w");
long long suma;
int v[nmax], deque[nmax];
int n, k, front, back;
int main()
{
int i;
fscanf(fin, "%d%d", &n, &k);
for(i=1;i<=n;++i)
fscanf(fin, "%d", &v[i]);
front = 1;
back = 0;
for(i=1;i<=n;++i)
{
while(front<=back && v[i]<=v[deque[back]]) --back;
deque[++back]=i;
if(deque[front]==i-k) ++front;
if(i>=k) suma+=v[deque[front]];
}
fprintf(fout,"%lld",suma);
return 0;
}