Pagini recente » Diferente pentru utilizator/robybrasov intre reviziile 49 si 48 | Cod sursa (job #2220144) | Cod sursa (job #562287) | Cod sursa (job #2797556) | Cod sursa (job #2332414)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
deque <long long> d;
long long v[5000005];
int main()
{
int n, k;
fin >> n >> k;
long long sum = 0;
for(int i = 1; i <= k; ++i)
{
fin >> v[i];
if(i == 1)
d.push_back(v[i]);
else
{
while(!d.empty() && d.back() > v[i])
d.pop_back();
d.push_back(v[i]);
}
if(i == k)
sum += d.front();
}
for(int i = k + 1; i <= n; ++i)
{
fin >> v[i];
if(v[i - k] == d.front())
d.pop_front();
while(!d.empty() && d.back() > v[i])
d.pop_back();
d.push_back(v[i]);
sum += d.front();
}
fout << sum << '\n';
return 0;
}