Pagini recente » Monitorul de evaluare | Cod sursa (job #204065) | Cod sursa (job #207136) | Cod sursa (job #1991007) | Cod sursa (job #2561389)
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
using namespace std;
vector <int> numbers (5000003);
int N,K, i;
long long sum;
ifstream fin;
ofstream fout;
int main(void){
deque <int> Deque;
fin.open("deque.in");
fin>>N>>K;
for (i=1; i<=N; i++)
fin>>numbers[i];
fin.close();
Deque.push_front(1);
for (i=2; i<K; i++){
while (numbers[Deque.front()] >= numbers[i] && Deque.size() > 0) Deque.pop_front();
Deque.push_front(i);
}
for (i=K; i<=N; i++){
while (numbers[Deque.front()] >= numbers[i] && Deque.size() > 0) Deque.pop_front();
Deque.push_front(i);
sum += ((long long)numbers[Deque.back()]);
if (Deque.back() == i - K + 1 ) Deque.pop_back();
}
fout.open("deque.out");
fout<<sum<<"\n";
fout.close();
return 0;
}