Pagini recente » Cod sursa (job #388194) | Cod sursa (job #387267) | Cod sursa (job #3144537) | Cod sursa (job #579222) | Cod sursa (job #256309)
Cod sursa(job #256309)
#include<stdio.h>
#define INPUT "deque.in"
#define OUTPUT "deque.out"
#define NMAX 5000001
FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");
long N, K, Sum, startPoint, endPoint;
long A[ NMAX ], Deq[ NMAX ];
void readData()
{
fscanf(fin, "%ld %ld", &N, &K);
for(long i = 0; i < N; ++i)
fscanf(fin, "%ld", &A[i]);
}
void solveInput()
{
startPoint = 0;
endPoint = -1;
for(long i = 0; i < N; ++i)
{
while( startPoint <= endPoint && A[ Deq[ endPoint ] ] >= A[ i ] )
--endPoint;
++endPoint;
Deq[ endPoint ] = i;
if( i >= K - 1 )
Sum += A[ Deq[ startPoint ] ];
if( Deq[ startPoint ] <= i - K + 1)
++startPoint;
}
fprintf(fout, "%ld\n", Sum);
}
int main()
{
Sum = 0;
readData();
solveInput();
fclose(fin);
fclose(fout);
return 0;
}