Pagini recente » Cod sursa (job #659194) | Borderou de evaluare (job #2080700) | Cod sursa (job #3146673) | Cod sursa (job #454822) | Cod sursa (job #535369)
Cod sursa(job #535369)
#include <iostream>
#include <fstream>
using namespace std;
const char iname[] = "deque.in";
const char oname[] = "deque.out";
ifstream fin(iname);
ofstream fout(oname);
long long n, k, i, j, mini;
long long Deque[5000005];
long long v[5000005], Front, Back;
int main()
{
fin >> n >> k;
for(i = 1; i <= n; i ++)
fin >> v[i];
Front = 1, Back = 0;
for(i = 1; i <= n; i ++)
{
while(v[i] <= v[Deque[Back]] && Back > 0 && Front <= Back)
Back--;
Deque[++Back] = i;
if(Deque[Front] <= i - k)
++Front;
if(i >= k)
mini = mini + v[Deque[Front]];
}
fout << mini << "\n";
}