Pagini recente » Cod sursa (job #1041612) | Cod sursa (job #3271593) | Cod sursa (job #810255) | Cod sursa (job #2226682) | Cod sursa (job #1205616)
#define infinit 1<<28
#define maxim 11000000
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f=fopen("deque.in","r");
FILE *g=fopen("deque.out","w");
long long sum=0;
int n,k,adi[11000001],pos,val;
inline void update(int st,int dr,int nod)
{
if (nod>maxim) return;;
if (st==dr&&st==pos) {adi[nod]=val;}
else {int mijl=(st+dr)/2;
if (pos<=mijl) update(st,mijl,nod*2);
else update(mijl+1,dr,nod*2+1);
if (nod*2<=maxim) adi[nod]=adi[nod*2];
if (nod*2+1<=maxim) adi[nod]=min(adi[nod*2],adi[nod*2+1]);
}
}
int main()
{int i,j,x;
fscanf(f,"%d %d",&n,&k);
for (i=1;i<=11000000;i++) adi[i]=infinit;
for (i=1;i<=k;i++) {fscanf(f,"%d",&x);
pos=i;
val=x;
update(1,n,1);}
sum=adi[1];
for (i=k+1;i<=n;i++) {pos=i-k;
val=infinit;
update(1,n,1);
if (i%10000==0) {i++;
i--;
}
fscanf(f,"%d",&x);
pos=i;
val=x;
update(1,n,1);
sum+=1LL*adi[1];
if (sum>0) {i++;
i--;
}
}
fprintf(g,"%lld\n",sum);
return 0;
}