Pagini recente » Cod sursa (job #2405692) | Cod sursa (job #2473681) | Cod sursa (job #774737) | Cod sursa (job #798233) | Cod sursa (job #935072)
Cod sursa(job #935072)
#include <fstream>
#include <deque>
using namespace std;
class Magic {
int k;
struct my_min
{
long long val;
int age;
my_min(int v) {
val = v;
age = 0;
}
};
deque<my_min> mins;
public:
Magic(int k) {
this->k = k;
}
void insert(int x) {
while (!mins.empty() && mins.back().val >= x)
mins.pop_back();
for (int i = 0; i < mins.size(); i++)
mins[i].age++;
mins.push_back(my_min(x));
if (mins.front().age == k)
mins.pop_front();
}
int get_min() {
return mins.front().val;
}
};
void insert(int x) {
}
int main()
{
ifstream in("deque.in");
ofstream out("deque.out");
int n, k, x;
long long sum = 0;
in>>n>>k;
Magic magic(k);
for (int i = 0; i < n; i++) {
in>>x;
magic.insert(x);
if (i >= k-1)
sum += magic.get_min();
}
out<<sum<<endl;
return 0;
}