Pagini recente » Cod sursa (job #1308682) | Cod sursa (job #1038960) | Cod sursa (job #2259179) | Cod sursa (job #1535088) | Cod sursa (job #2258893)
#include <fstream>
#include <deque>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
struct element {
int poz, val;
}e,first,last;
long long sol;
deque <element> Deq;
int N, K, i, x;
int main()
{
f>>N>>K;
for(i = 1;i <= K;++i) {
f>>x;
e.poz = i;
e.val = x;
while(!Deq.empty()) {
first = Deq.front();
if(e.val <= first.val) Deq.pop_front();
else break;
}
Deq.push_front(e);
}
last = Deq.back();
sol = sol + 1LL * last.val;
for(i = K+1;i <= N;++i) {
f>>x;
e.poz = i;
e.val = x;
while(!Deq.empty()) {
first = Deq.front();
if(e.val <= first.val) Deq.pop_front();
else break;
}
Deq.push_front(e);
last=Deq.back();
if(i - last.poz >= K) Deq.pop_back();
last = Deq.back();
sol = sol + 1LL * last.val;
}
g<<sol;
return 0;
}