Pagini recente » Cod sursa (job #584739) | Cod sursa (job #2945235) | Cod sursa (job #340912) | Cod sursa (job #3254906) | Cod sursa (job #625918)
Cod sursa(job #625918)
#include <stdio.h>
int N,K,A[5000000],Deque[5000000],start=1,end=0;
long long suma;
void deque()
{
for(int i=1;i<=N;i++)
{
while(start<=end && A[i]<=A[Deque[end]])
end--;
Deque[++end]=i;
if(Deque[end]-Deque[start]==K)
start++;
if(i>=K)
suma+=A[Deque[start]];
}
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d",&N);
scanf("%d",&K);
for(int i=1;i<=N;i++)
scanf("%d",&A[i]);
//for(int i=1;i<=N;i++)
// {
// fscanf("%d",&A[i]);
// while(start<=end && A[i]<=A[Deque[end]])
// end--;
//
// Deque[++end]=i;
// if(Deque[end]-Deque[start]==K)
// start++;
//
// if(i>=K)
// suma+=A[Deque[start]];
//
//
//}
deque();
printf("%lld",suma);
fclose(stdin);
fclose(stdout);
return 0;
}