Pagini recente » Cod sursa (job #1867362) | Cod sursa (job #2747831) | Cod sursa (job #2732156) | Cod sursa (job #1972879) | Cod sursa (job #1912877)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream fin ("deque.in");
ofstream fout("deque.out");
struct val {
int long long info;
int idx;
};
deque<val> maxim;
int main()
{
int n, k;
int long long sum = 0;
val x;
fin >> n >> k;
for (int i=1; i <= k; i++) {
fin >> x.info;
x.idx = i;
while (!maxim.empty() && x.info <= maxim.back().info) {
maxim.pop_back();
}
maxim.push_back(x);
}
for (int i=1; i <= n-k+1; i++) {
fin >> x.info;
x.idx = i+k;
//cout << maxim.front().info << ' ' << sum << ' ';
sum += maxim.front().info;
while (!maxim.empty() && x.info <= maxim.back().info) {
maxim.pop_back();
}
maxim.push_back(x);
if (maxim.front().idx == i) maxim.pop_front();
}
fout << sum;
return 0;
}