Cod sursa(job #531119)
| Utilizator | Data | 8 februarie 2011 22:21:40 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include<stdio.h>
using namespace std;
#define nmax 5000005
int a[nmax], dq[nmax], st, n;
long long sum;
int k;
int t;
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
st = 1;
t = 1;
scanf("%d %d",&n,&k);
for(int i = 1; i <= n; i++)
scanf("%d",&a[i]);
dq[1] = a[1];
for(int i = 2; i <= n; i++)
{
while (a[i] < dq[t] && t >= st)
t--;
dq[++t] = a[i];
if (i > k && dq[st] == a[i-k]) st++;
if (i >= k) sum += dq[st];
}
printf("%lld",sum);
return 0;
}
