Cod sursa(job #813104)
| Utilizator | Data | 14 noiembrie 2012 21:59:04 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.47 kb |
#include<cstdio>
#define nmax 5000001
int deq[nmax],poz[nmax],n,k;
int main()
{
long long x,p,u,i;
long long s=0;
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%lld %lld",&n,&k);
scanf("%lld",&deq[1]); poz[1]=1;
p=1;
u=1;
for(i=2;i<=n;++i)
{
scanf("%lld",&x);
while((x<=deq[u])&&(p<=u))
u--;
u++;
deq[u]=x;poz[u]=i;
if (poz[p]+k<=i)
p++;
if (i>=k)
s=s+deq[p];
}
printf("%lld",s);
}