Pagini recente » Cod sursa (job #1940125) | Cod sursa (job #2183843) | Cod sursa (job #1637800) | Cod sursa (job #3228029) | Cod sursa (job #2671442)
#include <fstream>
#include <deque>
#define ind first
#define val second
using namespace std;
typedef long long ll;
ifstream fin("deque.in");
ofstream fout("deque.out");
const int NMAX = 5000005;
int v[NMAX];
ll n, k;
deque < pair <int, int> > deck;
ll ans;
int main()
{
fin >> n >> k;
for(int i = 1; i <= n; i++)
fin >> v[i];
int i;
for(i = 1; i < k; i++) {
while(!deck.empty() && deck.back().val > v[i])
deck.pop_back();
deck.push_back({i, v[i]});
}
for(i = k; i <= n; i++) {
while(!deck.empty() && deck.back().val > v[i])
deck.pop_back();
deck.push_back({i, v[i]});
while(!deck.empty() && deck.front().ind < i - k + 1)
deck.pop_front();
ans += deck.front().val;
}
fout << ans;
return 0;
}