Pagini recente » Cod sursa (job #2468552) | Cod sursa (job #1588660) | Cod sursa (job #2375175) | Cod sursa (job #891292) | Cod sursa (job #2731324)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("deque.in");
ofstream out("deque.out");
int n,i,k,f=1,b=0; // f=front,b=back, f>b=deque vid
int a[5000010],d[5000010];
long long S; //suma
int main()
{
in>>n>>k;
for(i=1; i<=n; i++)
in>>a[i]; //citim sirul dat
for(i=1; i<=n; i++)
{
while (f<=b && a[i]<=a[d[b]])
b--;
d[++b] = i; // Adaugam pozitia elementului curent in deque
if (d[f] == i-k) f++;
if (i >= k)
S+=a[d[f]];
}
out<<S;
return 0;
}