Pagini recente » Cod sursa (job #165739) | Cod sursa (job #2334779) | Cod sursa (job #1551355) | Cod sursa (job #165533) | Cod sursa (job #433464)
Cod sursa(job #433464)
#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, K;
long long S = 0;
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