Cod sursa(job #1607095)
| Utilizator | Data | 20 februarie 2016 20:17:40 | |
|---|---|---|---|
| Problema | Deque | Scor | 25 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include <cstdio>
using namespace std;
#define DIM 5000001
int v[DIM], D[DIM];
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int n, k, i, j, s, t, d, st, dr;
s = 0;
scanf("%d%d",&n,&k);
for( i = 1; i <= n; ++i ) scanf("%d",&v[i]);
D[1] = st = dr = 1;
for( i = 2; i <= n; ++i ){
while( st <= dr && v[i] <= v[D[dr]] )
dr--;
dr++;
D[dr] = i;
if( D[st] <= i - k ) st++;
if( i >= k ) s += v[D[st]];
}
printf("%d",s);
return 0;
}
