Pagini recente » Cod sursa (job #484914) | Cod sursa (job #428618) | Cod sursa (job #2350514) | Cod sursa (job #1223853) | Cod sursa (job #304838)
Cod sursa(job #304838)
//Arhiva Educationala - Deque
#include <stdio.h>
#define MaxN 5000001
int v[MaxN],n,k;
long long suma;
int deque[MaxN];
int cap, coada;
FILE *f=fopen("deque.in","r");
FILE *g=fopen("deque.out","w");
int main(){
fscanf(f,"%d %d",&n,&k);
for(int i = 1; i <= n; i++)
fscanf(f,"%d\n",&v[i]);
cap = 1;
coada = 0;
for(int i = 1; i <= n; i++){
while ( cap <= coada && v[i] <= v[ deque[coada] ]) --coada;
deque[++coada] = i;
if (deque[cap] == i-k) cap++;
if (i >= k) suma += v[ deque[cap] ];
};
printf(g,"%lld",suma);
};