Pagini recente » Rating Sergiu (lisiom) | Cod sursa (job #1244281) | Cod sursa (job #2028014) | Cod sursa (job #838694) | Cod sursa (job #3193925)
#include<bits/stdc++.h>
#define lli long long
#define vli vector<lli>
using namespace std;
lli sol(vli arr, int n, int k){
vli res;
deque<lli> dq;
int i = 0;
for(i = 0; i < k ; i++){
while(!dq.empty() && arr[i] <= arr[dq.back()])
dq.pop_back();
dq.push_back(i);
}
for(; i < n; i++){
res.push_back(arr[dq.front()]);
while(!dq.empty() && (dq.front() <= i-k))
dq.pop_front();
while(!dq.empty() && (arr[i] <= arr[dq.back()]))
dq.pop_back();
dq.push_back(i);
}
res.push_back(arr[dq.front()]);
dq.pop_front();
return accumulate(res.begin(), res.end(), 0);
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);cin.tie(0);
ifstream cin ("deque.in");
ofstream cout("deque.out");
int t=1;
//cin >> t;
while(t--){
lli n, k;
cin >> n >> k;
vli a(n);
for(int i = 0; i < n; i++) cin >> a[i];
cout << sol(a, n, k)<<endl;
}
return 0;
}