Pagini recente » Cod sursa (job #2004638) | Cod sursa (job #1065263) | Cod sursa (job #728918) | Profil MateiDistrugatorul6969 | Cod sursa (job #1612971)
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
class min_deque{
deque<int> dq;
public:
min_deque(){}
void push(const int n){
while(!dq.empty() && dq.back() > n){
dq.pop_back();
}
dq.push_back(n);
}
void pop(const int n){
if(!dq.empty() && dq.front() == n){
dq.pop_front();
}
}
int front(){
return dq.front();
}
};
int main()
{
ifstream f("deque.in");
ofstream g("deque.out");
int n, k;
f >> n >> k;
deque<int> dq;
min_deque min_dq;
for(int i = 0, x; i < k; ++i){
f >> x;
dq.push_back(x);
min_dq.push(x);
}
long long rez = min_dq.front();
for(int i = k, x; i < n; ++i){
f >> x;
min_dq.push(x);
dq.push_back(x);
min_dq.pop(dq.front());
dq.pop_front();
rez += (long long)min_dq.front();
}
g << rez << endl;
return 0;
}