Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/satan_kid | Monitorul de evaluare | Cod sursa (job #129675) | Cod sursa (job #2021491)
#include <bits/stdc++.h>
#define maxn 5000010
#define in "deque.in"
#define out "deque.out"
using namespace std;
ifstream fin(in);
ofstream fout(out);
int n,k;
int a[maxn], q[maxn];
int Front, Back;
int64_t sum;
int main()
{
int i;
fin >> n >> k;
for (i = 1; i <= n; i++)
fin >> a[i];
Front = 1, Back = 0;
for (i = 1; i <= n; i++)
{
while (Front <= Back && a[i] <= a[q[Back]])
Back--;
q[++Back] = i;
if (q[Front] == i-k) Front++;
if (i >= k) sum += a[q[Front]];
}
fout << sum << "\n";
fin.close();
fout.close();
return 0;
}