Pagini recente » Cod sursa (job #1754018) | Cod sursa (job #95146) | Cod sursa (job #2497065) | Cod sursa (job #14928) | Cod sursa (job #2557303)
#define fisier "deque"
#ifdef consola
#include <iostream>
#define in std::cin
#define out std::cout
#else
#include <fstream>
#ifndef fisier
#define fisier "HYPER"
#endif
std::ifstream in(fisier ".in");
std::ofstream out(fisier ".out");
#endif
const int MAX_N = 5000000;
struct Poz {int val, idx;};
struct Deq {
Poz v[MAX_N], *p = v, *u = v - 1;
inline bool gol() {return p > u;}
void print(char msj[]) {out << msj << "["; for (Poz* poz = p; poz <= u; poz++) out << poz->val << ", "; out << "]\n";}
} deq_min, deq_max;
int main() {
int n, k, val, suma = 0;
in >> n >> k;
for (int i = 0; i < n; i++) {
in >> val;
while (!deq_min.gol() && deq_min.u->val >= val) deq_min.u--;
*++(deq_min.u) = {val, i};
if (deq_min.u->idx - deq_min.p->idx == k) deq_min.p++;
if (i >= k - 1) {
suma += deq_min.p->val;
}
}
out << suma;
}
//