Pagini recente » Cod sursa (job #3173395) | Cod sursa (job #538167) | Cod sursa (job #928240) | Cod sursa (job #2553269) | Cod sursa (job #2375582)
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
ifstream f1("deque.in");
ofstream f2("deque.out");
const int MAXN = 5000005;
vector<int> a;
deque<int> indiciPoz;
//turn deque into struct to make it more efficient
int k,n;
long long suma=0;
int main(){
f1>>n>>k;
for(int i=0;i<n;i++){
int x;
f1>>x;
a.push_back(x);
}
indiciPoz.push_front(0);
for(int i=1;i<k;i++){
while(!indiciPoz.empty() && a[i]<a[indiciPoz.back()]){
indiciPoz.pop_back();
}
indiciPoz.push_back(i);
}
suma+=(long long)a[indiciPoz.front()];
for(int i=k;i<n;i++){
if(i-k>=indiciPoz.front())
indiciPoz.pop_front();
while(!indiciPoz.empty() && a[i]<a[indiciPoz.back()])
indiciPoz.pop_back();
indiciPoz.push_back(i);
suma+=a[indiciPoz.front()];
}
f2<<suma;
return 0;
}