Pagini recente » Profil OanaLorena | Istoria paginii runda/swag/clasament | Istoria paginii runda/preoni_1/clasament | Autentificare | Cod sursa (job #304840)
Cod sursa(job #304840)
//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] ];
};
fprintf(g,"%lld",suma);
};