Pagini recente » Cod sursa (job #3121767) | Cod sursa (job #2199149) | Cod sursa (job #3226097) | Cod sursa (job #370644) | Cod sursa (job #1452191)
#include <fstream>
using namespace std;
#define MAX_N 6000000
int E[MAX_N], D[MAX_N];
int front = 0, back = -1;
int main() {
ifstream fin("deque.in");
ofstream fout("deque.out");
int n, k;
fin >> n >> k;
for (int i = 0; i < n; ++i) {
fin >> E[i];
}
int sum = 0;
for (int i = 0; i < n; ++i) {
// Remove elements greater than E[i], since E[i] will be the minimum
while (front <= back && E[D[back]] > E[i]) {
back -= 1;
}
D[++back] = i;
if (D[front] == i - k) {
front++;
}
if (i >= k - 1) {
sum += E[D[front]];
}
}
fout << sum;
fin.close();
fout.close();
}