Pagini recente » Cod sursa (job #422409) | Cod sursa (job #2721312) | Cod sursa (job #2231252) | Cod sursa (job #2479410) | Cod sursa (job #3126932)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
const int nmax = 5000010;
int k,n;
int a[nmax], deque[nmax];
int inceput, sfarsit;
long long suma;
int main()
{
fin>>n;
fin>>k;
for (int i=1;i<=n;i++)
fin >> a[i];
inceput = 1, sfarsit = 0;
for (int i=1;i<=n;i++)
{while (inceput <= sfarsit && a[i] <= a[deque[sfarsit]])
sfarsit--;
deque[++sfarsit] = i;
if (deque[inceput] == i-k) inceput++;
if (i >= k) suma += a[deque[inceput]];
}
fout << suma << '\n';
fin.close();
fout.close();
return 0;
}