Pagini recente » Monitorul de evaluare | Cod sursa (job #1626252) | Cod sursa (job #3257348) | Cod sursa (job #932943) | Cod sursa (job #3343284)
#include <fstream>
#include <deque>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
struct Elem
{
int poz, val;
Elem(int poz, int val)
{
this->poz = poz;
this->val = val;
}
};
int main()
{
int N, K;
deque<Elem> dq;
long long sum = 0;
//
f >> N >> K;
for(int i = 1; i <= N; i++)
{
int x;
f >> x;
if(dq.front().poz == i - K)
dq.pop_front();
while(!dq.empty() && dq.back().val >= x)
dq.pop_back();
dq.push_back(Elem(i, x));
if(i >= K)
sum += dq.front().val;
}
g << sum;
f.close();
g.close();
return 0;
}