Pagini recente » Cod sursa (job #1643533) | Cod sursa (job #2520461) | Cod sursa (job #1749838) | Cod sursa (job #2808919) | Cod sursa (job #2887429)
#include <iostream>
#include <stack>
#include <fstream>
#include <string>
#include <cstring>
#include <deque>
using namespace std;
//#pragma warning(disable : 4996)
ifstream in("deque.in");
ofstream out("deque.out");
#define MAX 5000010
int a[MAX], d[MAX];
//deque<int> d;
//int a[10000],
//n,
//k,
//s = 0;
//
//in >> n >> k;
//for (int i = 1; i <= n; ++i) {
// in >> a[i];
// while (d.size() && a[d.back()] > a[i]) {
// d.pop_back();
// }
// d.push_back(i);
// if (d.front() == i - k) d.pop_front();
// if (i >= k) s += a[d.front()], cout << a[d.front()] << " ";
//}
//out << s;
int main(void) {
int n,
k,
Front = 1,
Back = 0;
long long s = 0;
in >> n >> k;
for (int i = 1; i <= n; i++) {
in >> a[i];
while (Front <= Back && a[i] <= a[d[Back]]) Back--;
d[++Back] = i;
if (d[Front] == i - k) Front++;
if (i >= k) s += a[d[Front]];
}
out << s;
}