Pagini recente » Cod sursa (job #3201816) | Cod sursa (job #270416) | Cod sursa (job #865272) | Cod sursa (job #2187663) | Cod sursa (job #2609315)
#include <fstream>
#include <utility>
#include <iostream>
using namespace std;
const int MAX_N = 5000010;
pair<int, int64_t> deq[MAX_N];
int main()
{
ifstream fin("deque.in");
int n, k;
fin >> n >> k;
int front = 0;
int back = -1;
int64_t sum = 0;
for (int i = 0; i < n; i++)
{
int64_t val;
fin >> val;
while (back >= 0 && deq[back].second > val)
back--;
deq[++back] = make_pair(i, val);
if (i >= k - 1)
{
while (deq[front].first < i - (k - 1))
front++;
int64_t min = deq[front].second;
sum += min;
}
}
fin.close();
ofstream fout("deque.out");
fout << sum;
fout.close();
return 0;
}