Pagini recente » Cod sursa (job #2697847) | Cod sursa (job #637035) | Cod sursa (job #2520736) | Cod sursa (job #575921) | Cod sursa (job #3170265)
#include <fstream>
#include<vector>
#include <deque>
#include <iostream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
vector<int> window;
deque<int> dq;
int main() {
int n, k;
long long rez = 0, x;
fin >> n >> k;
window.resize(n+2);
for (int i = 0; i < n; i++){
fin >> window[i];
///elimin din stanga daca primul nu mai face parte din secv. ultimilor k
if (!dq.empty() && dq.front() == i - k){
dq.pop_front();
}
///elimin din dreapta elementele care sigur nu vor mai fi minime
while (!dq.empty() && window[i] <= window[dq.back()]){
dq.pop_back();
}
dq.push_back(i);
if (i >= k - 1)
{
rez += window[dq.front()];
}
}
fout << rez;
return 0;
}