Pagini recente » Cod sursa (job #2688344) | Cod sursa (job #3002547) | Cod sursa (job #1634214) | Cod sursa (job #2446059) | Cod sursa (job #3127264)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int main()
{
vector<long long> numbers;
long long no_of_elements, interval, x, sum = 0;
f >> no_of_elements >> interval;
for(long long i=0; i<no_of_elements; i++){
f >> x;
numbers.push_back(x);
}
vector<long long> minimums;
for(long long i=0; i<interval; i++){
while(!minimums.empty() && numbers[i] <= numbers[minimums.back()]){
minimums.pop_back();
}
minimums.push_back(i);
}
sum += numbers[minimums.front()];
for(long long i=interval; i<no_of_elements; i++){
while(!minimums.empty() && numbers[i] <= numbers[minimums.back()]){
minimums.pop_back();
}
minimums.push_back(i);
if(minimums.front() <= i - interval){
minimums.erase(minimums.begin());
}
sum += numbers[minimums.front()];
}
g << sum;
return 0;
}