Cod sursa(job #1472378)
| Utilizator | Data | 17 august 2015 03:08:48 | |
|---|---|---|---|
| Problema | Deque | Scor | 85 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
#include<stdio.h>
int a,n,k,i,b[5000001],q[5000001],p,u;
long long s;
int main() {
freopen("deque.in","r",stdin),freopen("deque.out","w",stdout),scanf("%d%d",&n,&k);
for(i=1;i<=n;i++) {
scanf("%d",&a);
for(;u>p&&a<q[u-1];u--);
q[u++]=a,b[p]++,b[u-1]=1;
if(u-p>1)
b[p+1]++;
if(((u-p==1&&p==i-k)||(p<i-k&&u-p<k)||(i==k&&b[p]>1))&&b[p]<k)
s+=q[p];
else if(u-p==k||b[p]==k||p==i-k||(i==k&&b[p]==1))
s+=q[p++];
}
printf("%lld",s);
}
