Cod sursa(job #634477)
| Utilizator | Data | 16 noiembrie 2011 15:11:58 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.46 kb |
#include <stdio.h>
#define MAXN 5000010
long long sum;
int n, k, i, p, u, v[MAXN], deque[MAXN];
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
p=0;
u=-1;
sum=0;
scanf("%d%d", &n, &k);
for (i=0;i<n;i++)
scanf("%d", &v[i]);
for (i=0;i<n;i++)
{
while ((p<=u)&&(v[i]<=v[deque[u]]))
u--;
deque[++u]=i;
if (deque[p]==(i-k))
p++;
if (i>=(k-1))
sum+=v[deque[p]];
}//for i
printf("%lld\n",sum);
return 0;
}//main
