Pagini recente » Cod sursa (job #1411290) | Cod sursa (job #3134069) | Istoria paginii runda/reluare_kidsim2 | Cod sursa (job #736760) | Cod sursa (job #1097889)
#include <iostream>
#include <fstream>
#include <deque>
#include <algorithm>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
const int Nmax = 5e6 + 100;
const int OO = 0x3f3f3f3f;
struct Poz_Val{
int p, v;
}E;
int N, K;
long long S;
deque <Poz_Val> D;
int main()
{
fin >> N >> K;
E.p = 0; E.v = OO;
D.push_back(E);
for(int i = 1; i <= K; i++)
{
fin >> E.v; E.p = i;
while(D.back().v >= E.v && D.size())
D.pop_back();
D.push_back(E);
}
S = D.front().v;
for(int i = K + 1; i <= N; i++)
{
fin >> E.v; E.p = i;
while(D.back().v >= E.v && D.size())
D.pop_back();
D.push_back(E);
if(D.front().p <= i - K)
D.pop_front();
S += D.front().v;
}
fout << S;
return 0;
}