Pagini recente » Cod sursa (job #779692) | Borderou de evaluare (job #1298889) | Cod sursa (job #3220206) | Cod sursa (job #2501847) | Cod sursa (job #2091912)
#include <fstream>
#include <deque>
#include <iostream>
using namespace std;
#define MAXN 5000000+10
int v[MAXN];
deque<int> dq;
void push_deque(int i){
while(!dq.empty() && v[dq.back()] > v[i]) dq.pop_back();
dq.push_back(i); }
void pop_deque(int i){
if(!dq.empty() && dq.front() == i) dq.pop_front(); }
int main(){
ifstream f("deque.in");
ofstream g("deque.out");
int n, k;
f >> n >> k;
for(int i = 0; i < n; ++i) f >> v[i];
long long rez = 0;
for(int st = -k, dr = 0; dr < n; ++st, ++dr){
push_deque(dr);
pop_deque(st);
if(st >= -1) rez += v[dq.front()]; }
g << rez << endl;
cout << rez << endl;
return 0;
}