Pagini recente » Cod sursa (job #2630494) | Cod sursa (job #2132318) | Cod sursa (job #1183967) | Cod sursa (job #2022224) | 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;
}