Pagini recente » Cod sursa (job #361136) | Cod sursa (job #2446324) | Cod sursa (job #453452) | Cod sursa (job #189677) | Cod sursa (job #433461)
Cod sursa(job #433461)
#include <fstream>
#include <deque>
using namespace std;
class MyDeque : private deque< pair<int, int> > {
public:
void add(const int x, const int i) {
while (!empty() && back().first > x ) pop_back();
push_back(make_pair(x, i));
}
int get_min(const int i, const int k) {
if (i - front().second >= k) pop_front();
return front().first;
}
};
int main()
{
int N, i, x, S = 0, K;
MyDeque deq;
ifstream f1("deque.in");
ofstream f2("deque.out");
f1 >> N >> K;
for (i = 0; i != K; ++i) {
f1 >> x;
deq.add(x, i);
}
S += deq.get_min(i - 1, K);
for (; i != N; ++i) {
f1 >> x;
deq.add(x, i);
S += deq.get_min(i, K);
}
f2 << S << endl;
return 0;
}
// front .... back