Pagini recente » Cod sursa (job #3128617) | Cod sursa (job #2768005) | Cod sursa (job #863587) | Cod sursa (job #1501797) | Cod sursa (job #2716397)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("deque.in");
ofstream out ("deque.out");
int v[5000000], Dq[5000000];
int main ()
{
int n, k;
long long sum = 0;
in >> n >> k;
for (int i = 0; i < n; ++i)
{
in >> v[i];
}
int pos1 = 0, pos2 = 0;
Dq[0] = 0;
for (int i = 1; i < n; ++i)
{
if (v[i] < v[Dq[pos2]])
{
Dq[pos2] = i;
while (pos2 > pos1 && v[Dq[pos2]] < v[Dq[pos2 - 1]])
{
Dq[pos2 - 1] = Dq[pos2];
pos2--;
}
}
else
{
Dq[++pos2] = i;
}
if (i >= k - 1)
{
if (Dq[pos1] < i - k + 1)
{
pos1++;
}
sum += v[Dq[pos1]];
}
}
out << sum;
return 0;
}