Cod sursa(job #1731925)
| Utilizator | Data | 20 iulie 2016 13:41:28 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#include <cstdio>
#define BIG 5000010
int P[BIG], Deque[BIG],N,K,i;
int Prim=1,Ultim;
long long S;
int main() {
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d ",&N,&K);
for(i = 1;i<=N;++i)
scanf("%d ",&P[i]);
for(i = 1;i <= N;++i){
while(Prim <= Ultim && P[i] <= P[Deque[Ultim]]) Ultim--;
Deque[++Ultim] = i;
if(Deque[Prim] == i-K) Prim++;
if(i >= K) S+= P[Deque[Prim]];
}
printf("%lld\n", S);
return 0;
}
