Pagini recente » Cod sursa (job #2628878) | Cod sursa (job #1718726) | Cod sursa (job #1413409) | Cod sursa (job #354144) | Cod sursa (job #1468598)
#include <stdio.h>
#include <fstream>
#include <vector>
#include <deque>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
int N, K;
long long sum = 0;
vector<int> A;
deque<int> mydeque;
void read(){
in >> N >> K;
A.resize(N+1);
int x;
for(int i = 1; i <= N; ++i){
in >> x;
A[i] = x;
}
}
void Deque(){
for(int i = 1; i <= N; ++i){
deque<int>::reverse_iterator it = mydeque.rbegin();
while(it != mydeque.rend()){
if(A[i] < *it){
mydeque.pop_back();
*it++;
}
else break;
}
mydeque.insert(mydeque.end(), A[i]);
if(i - K >= 1 && mydeque.front() == A[i-K]){
mydeque.pop_front();
}
if(i >= K){
sum += mydeque.front();
}
}
}
int main(){
read();
Deque();
out << sum;
return 0;
}