Pagini recente » Cod sursa (job #2004338) | Cod sursa (job #2184028) | Cod sursa (job #2848285) | Cod sursa (job #1556889) | Cod sursa (job #1156594)
#include <cstdio>
#include <deque>
using namespace std;
struct punct
{
int x, poz;
};
deque <punct> q;
int main()
{
int n, k, x;
long long sum = 0;
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d %d", &n, &k);
for (int i = 1; i < k; ++i)
{
scanf("%d", &x);
punct aux;
aux.x = x;
aux.poz = i;
while ( !q.empty() && x < q.back().x )
q.pop_back();
q.push_back(aux);
}
for (int i = k; i <= n; ++i)
{
scanf("%d", &x);
punct aux;
aux.x = x;
aux.poz = i;
while ( !q.empty() && x < q.back().x )
q.pop_back();
q.push_back(aux);
if (q.front().poz == i-k) q.pop_front();
sum += (long long) q.front().x;
}
printf("%lld\n", sum);
return 0;
}