Pagini recente » Borderou de evaluare (job #367063) | Cod sursa (job #2075267) | Cod sursa (job #469316) | Cod sursa (job #64034) | Cod sursa (job #629962)
Cod sursa(job #629962)
#include <stdio.h>
int q[5000001],r[5000001],n,k,p,u;
long long s;
inline void push(int x,int i){
while(u>=p&&q[u]>=x)u--;
q[++u]=x; r[u]=i;
}
inline void pop(int x){
while(p<=u&&r[p]<=x)p++;
}
int main(){
int i,x;
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d %d",&n,&k); scanf("%d",&q[0]); r[0]=1;
for(i=2;i<=k;i++){scanf("%d",&x);push(x,i);};s=q[p];
for(i=k+1;i<=n;i++){
scanf("%d",&x);
pop(i-k);push(x,i);s+=q[p];}
printf("%lld\n",s);
}