Pagini recente » Cod sursa (job #2384504) | Cod sursa (job #2792842) | Cod sursa (job #1666314) | Cod sursa (job #1029142) | Cod sursa (job #256312)
Cod sursa(job #256312)
#include<stdio.h>
#define INPUT "deque.in"
#define OUTPUT "deque.out"
#define NMAX 5000001
#define LL long long
FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");
long N, K, startPoint, endPoint;
long A[ NMAX ], Deq[ NMAX ];
LL Sum;
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, "%lld\n", Sum);
}
int main()
{
Sum = 0;
readData();
solveInput();
fclose(fin);
fclose(fout);
return 0;
}