Pagini recente » Cod sursa (job #1230240) | Cod sursa (job #1929401) | Cod sursa (job #648714) | Cod sursa (job #2965917) | Cod sursa (job #1691841)
#include <iostream>
#include <cstdio>
#define N 50000001
using namespace std;
FILE *f, *g;
int v[N], d[N];
long long sum;
int k , n, st, dr = -1;
void stanga(int i)
{
if (i - k == d[st])
st++;
}
void dreapta(int i)
{
while (st <= dr && v[i] <= v[d[dr]])
dr--;
d[++ dr] = i;
}
int main()
{
//cout << "Hello world!" << endl;
f = fopen("deque.in", "r");
g = fopen("deque.out", "w");
fscanf(f, "%d%d", &n, &k);
int i;
for(i = 1; i <= n; i ++)
fscanf(f, "%d", &v[i]);
for (i = 1; i <= n; i ++)
{
if (i > k)
stanga(i);
dreapta(i);
if (i >= k)
sum += (long long)v[d[st]];
}
fprintf(g, "%lld", sum);
fclose(f);
fclose(g);
return 0;
}