Cod sursa(job #570970)
| Utilizator | Data | 3 aprilie 2011 20:20:34 | |
|---|---|---|---|
| Problema | Deque | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
#include<stdio.h>
using namespace std;
int a[5000009];
int p[5000009];
int n;
long long s;
int k;
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d", &n);
scanf("%d", &k);
for(int i=1;i<=n;i++)
scanf("%d", &a[i]);
int b=0,f=1;
for(int i=1;i<=n;i++)
{
while(a[i] <= a[p[b]] && f<=b)
{
b--;
}
b++;
v[b]=i;
if(p[f] == i-k)
{
f++;
}
if(i>=k)
s=s+a[p[f]];
}
printf("%lld", s);
return 0;
}
