Pagini recente » Borderou de evaluare (job #235548) | Borderou de evaluare (job #2379779) | Borderou de evaluare (job #3359503) | Borderou de evaluare (job #3365908) | Cod sursa (job #3365908)
#include <fstream>
#include <deque>
using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
deque<int> dq;
int v[5000005];
int main()
{
int n, k;
cin >> n >> k;
for (int i=1; i<=n; i++) {
cin >> v[i];
}
long long suma=0;
for (int i=1; i<=n; i++) {
while (dq.size()>=1) {
if (v[i]<=v[dq.back()]) dq.pop_back();
else if (v[i]>v[dq.back()]) break;
}
if (dq.size()>=1 && dq.front()==i-k) {
dq.pop_front();
}
dq.push_back(i);
if (i>=k) suma=suma+v[dq.front()];
}
cout << suma;
return 0;
}