Pagini recente » Cod sursa (job #34612) | Cod sursa (job #1922065) | Cod sursa (job #2879437) | Cod sursa (job #2769295) | Cod sursa (job #1425139)
#include <cstdio>
#include <deque>
using namespace std;
#define inFile "deque.in"
#define outFile "deque.out"
#define MAX_N 5000000
FILE *in = fopen(inFile, "r");
FILE *out = fopen(outFile, "w");
int A[MAX_N + 1];
deque < int > DQ;
int main() {
int N, i, K;
long long Sum = 0;
fscanf(in, "%d %d", &N, &K);
for(i = 1; i <= K; i++) {
fscanf(in, "%d", &A[i]);
while(!DQ.empty() && A[DQ.back()] >= A[i]) DQ.pop_back();
DQ.push_back(i);
}
Sum += A[DQ.front()];
for(i = K+1; i <= N; i++) {
fscanf(in, "%d", &A[i]);
if(DQ.front() < i-K+1) DQ.pop_front();
while(!DQ.empty() && A[DQ.back()] >= A[i]) DQ.pop_back();
DQ.push_back(i);
Sum += A[DQ.front()];
}
fprintf(out, "%lld\n", Sum);
fclose(in);
fclose(out);
return 0;
}