Pagini recente » Monitorul de evaluare | Profil raul_marius_cpr | Diferente pentru runda/11a intre reviziile 6 si 7 | Diferente pentru fmi-no-stress-3/solutii intre reviziile 7 si 6 | Cod sursa (job #2093669)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
deque <int> d;
int v[5000005];
int main()
{
int n, k;
fin >> n >> k;
for(int i = 1; i <= n; ++i)
fin >> v[i];
for(int i = 1; i <= k; ++i){
if(i == 1)
d.push_back(v[i]);
if(i >= 2){
while(!d.empty() && d.back() > v[i])
d.pop_back();
d.push_back(v[i]);
}
}
long long sum_min = 0;
sum_min += d.front();
for(int i = 2; i <= n - k + 1; ++i){
if(d.front() == v[i - 1])
d.pop_front();
while(!d.empty() && d.back() > v[i + k - 1])
d.pop_back();
d.push_back(v[i + k - 1]);
sum_min += d.front();
}
fout << sum_min << '\n';
return 0;
}