Pagini recente » Cod sursa (job #1198136) | Cod sursa (job #1152070) | Cod sursa (job #1510922) | Cod sursa (job #2518872) | Cod sursa (job #674097)
Cod sursa(job #674097)
#include <cstdio>
#define MAXN 5000001
int deque[MAXN], a[MAXN];
int front = 1, back = 0;
int n, k;
long long sum;
void read()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d ", &n, &k);
for(int i = 1; i <= n; ++i)
scanf("%d ", a + i);
}
void solve()
{
for(int i = 1; i <= n; ++i)
{
while( front <= back && a[i] <= a[ deque[ back ] ] ) --back;
deque[ ++back ] = i;
if( deque[ front ] == i - k ) ++front;
if( i >= k ) sum += a[ deque[ front ] ];
}
}
void printResult()
{
printf("%lld\n", sum);
}
int main()
{
read();
solve();
printResult();
return 0;
}