Pagini recente » Cod sursa (job #2424280) | Cod sursa (job #2364127) | Cod sursa (job #1487618) | Cod sursa (job #79593) | Cod sursa (job #1783995)
#include <iostream>
#include <fstream>
const int MAX = 5000000;
int arr[MAX], deq[MAX];
void print(int arr[], int first, int last){
for(int i = first; i < last; ++i){
std::cout << arr[i] << " ";
}
std::cout << "\n";
}
int main(){
std::ifstream fin("deque.in");
std::ofstream fout("deque.out");
int n, k;
long long sum = 0;
int first = 0, last = 0;
fin >> n >> k;
for(int i = 0; i < k; ++i){
fin >> arr[i];
while(last - first > 0 && arr[deq[last - 1]] >= arr[i]){
last--;
}
last++;
deq[last - 1] = i;
}
for(int i = k; i < n; ++i){
fin >> arr[i];
sum += arr[deq[first]];
if(i - deq[first] >= k){
first++;
}
while(last - first > 0 && arr[deq[last - 1]] >= arr[i]){
last--;
}
last++;
deq[last - 1] = i;
}
sum += arr[deq[first]];
fout << sum;
fin.close();
fout.close();
return 0;
}