Pagini recente » Cod sursa (job #899008) | Cod sursa (job #2902281) | Cod sursa (job #2372308) | Cod sursa (job #1673137) | Cod sursa (job #471068)
Cod sursa(job #471068)
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<deque>
using namespace std;
// just chilling ( e admiterea la unibuc maine :p, si nu am mai codat de mult.. )
#define NMAX 5000005
int A[NMAX],D[NMAX];
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int N,K;
scanf("%d%d",&N,&K);
int i;
for(i=1; i<=N; ++i)
scanf("%d",&A[i]);
long long ANS=0;
int inc=1,sf=0;
A[0]=-90000009;
for(i=1; i<=N; ++i)
{
if( A[i]<=A[D[inc]] ) sf=inc-1;
else
while( A[i]<=A[D[sf]] && sf>=inc )--sf;
D[++sf]=i;
int old=i-K+1;
while( D[inc]<old ) ++inc;
if( i>=K )
ANS+=A[ D[inc] ];
}
printf("%lld\n",ANS);
return 0;
}