Cod sursa(job #311867)
| Utilizator | Data | 4 mai 2009 15:36:42 | |
|---|---|---|---|
| Problema | Deque | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#include <stdio.h>
#define N 5000005
long long d[N],v[N];
int p,u,n,K;
void stanga(int x)
{
if (x-d[p]>=K)
p++;
}
void dreapta(int x)
{
while (p<=u&&v[x]<=v[d[u]])
u--;
d[++u]=x;
}
int main()
{
freopen ("deque.in","r",stdin);
freopen ("deque.out","w",stdout);
int x;
long long s=0;
scanf("%d%d",&n,&K);
for (x=0;x<K;++x)
{
scanf("%lld",&v[x]);
dreapta(x);
}
s=v[d[p]];
for(x=K;x<n;++x)
{
scanf("%lld",&v[x]);
stanga(x);
dreapta(x);
s+=v[d[p]];
}
printf("%lld",s);
return 0;
}
