Pagini recente » Cod sursa (job #1199553) | Cod sursa (job #2660106) | Cod sursa (job #2402705) | Cod sursa (job #1819695) | Cod sursa (job #2375576)
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
ifstream f1("deque.in");
ofstream f2("deque.out");
const int MAXN = 5000005;
vector<long long> a;
deque<long long> indiciPoz;
//turn deque into struct to make it more efficient
long long 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(long i=1;i<k;i++){
while(!indiciPoz.empty() && a[i]<a[indiciPoz.back()]){
indiciPoz.pop_back();
}
indiciPoz.push_back(i);
}
suma+=a[indiciPoz.front()];
for(long 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;
}