Pagini recente » Cod sursa (job #1645918) | Cod sursa (job #1138584) | Cod sursa (job #2831146) | Borderou de evaluare (job #2051209) | Cod sursa (job #2921383)
#include<bits/stdc++.h>
using namespace std;
string numeFisier="deque";
ifstream fin(numeFisier+".in"); ofstream fout(numeFisier+".out");
#define cin fin
#define cout fout
#define INIT ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define mp make_pair
#define pb push_back
#define ft first
#define sc second
#define ll long long
#define pii pair<int, int>
#define count_bits __builtin_popcount
#define int ll
int t, n, m, k, a[5000010], q, l, r;
int32_t main(){
INIT
cin>>n>>k;
for(int i=1; i<=n; i++){
cin>>a[i];
}
int sum=0;
int beg=1, en=k;
deque<int32_t> dq;
for(int i=1; i<=k; i++){
while((!dq.empty()) && (a[(int32_t)dq.back()]>=a[i]) ){
dq.pop_back();
}
dq.push_back(i);
}
sum+=a[(int32_t)dq.front()];
for(beg++, en++;en<=n;beg++, en++){
while((!dq.empty()) && beg>dq.front()){
dq.pop_front();
}
while((!dq.empty()) && (a[(int32_t)dq.back()]>=a[en])){
dq.pop_back();
}
dq.push_back(en);
sum+=a[(int32_t)dq.front() ];
}
cout<<sum;
return 0;
}