Pagini recente » Cod sursa (job #1143882) | Cod sursa (job #1265358) | Cod sursa (job #174212) | Cod sursa (job #425711) | Cod sursa (job #2568634)
#include <bits/stdc++.h>
#define N 5000200
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int a[N];
int dq[N];
int n,k;
int main()
{
int i,f,b;
long long sum=0;
fin>>n>>k;
for(i=1;i<=n;++i) fin>>a[i];
f=1; b=0;
for(i=1;i<=n;++i)
{
while(f<=b&&a[i]<=a[dq[b]])b--;
dq[++b]=i;
// Daca elementul minim coincide cu cel de pe pozita i-K, ii eliminam pozitia din deque, deoarece acesta nu mai conteaza pentru pasii >= i
if(dq[f]==i-k) f++;
if(i>=k) sum+=a[dq[f]];
}
fout<<sum;
return 0;
}