Pagini recente » Cod sursa (job #1711660) | Cod sursa (job #2254899) | Cod sursa (job #646757) | Cod sursa (job #727673) | Cod sursa (job #508599)
Cod sursa(job #508599)
#include <fstream>
using namespace std;
ifstream in ("deque.in");
ofstream out ("deque.out");
const int N = 1 << 23;
int n, k, v[N], d[N], p = 1, u;
long long rez;
inline void stanga (int poz) {
if (poz - d[p] == k) {
++p;
}
}
void dreapta (int poz) {
for (; v[poz] <= v[d[u]] && u >= p; --u);
d[++u] = poz;
}
void birth () {
in >> n >> k;
for (int i = 1; i <= n; in >> v[i++]);
}
void raise () {
for (int i = 1; i <= k; ++i) {
dreapta (i);
}
rez += v[d[p]];
for (int i = k + 1; i <= n; ++i) {
stanga (i);
dreapta (i);
rez += v[d[p]];
}
}
void death () {
out << rez << '\n';
}
int main () {
birth ();
raise ();
death ();
return 0;
}