Pagini recente » Cod sursa (job #2497696) | Cod sursa (job #2889043) | Cod sursa (job #1157366) | Cod sursa (job #2840441) | Cod sursa (job #2785972)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
deque < pair < int , int > > d;
int main()
{
ifstream f("deque.in");
ofstream g("deque.out");
int n; f >> n;
int k; f >> k;
long long ans = 0;
for(int i = 1; i <= k; i++)
{
int x; f >> x;
if(d.empty())
d.push_back({x, i});
else
{
while(x < d.back().first)
d.pop_back();
d.push_back({x, i});
}
}
ans += 1LL * d.front().first;
for(int i = k + 1; i <= n; i++)
{
int x; f >> x;
int l = i - k + 1;
while(!d.empty() && d.front().second < l)
d.pop_front();
while(!d.empty() && x < d.back().first)
d.pop_back();
d.push_back({x, i});
ans += 1LL * d.front().first;
}
g << ans << '\n';
f.close();
g.close();
return 0;
}