Pagini recente » Cod sursa (job #2184445) | Borderou de evaluare (job #1204831) | Cod sursa (job #968801) | Cod sursa (job #392819) | Cod sursa (job #1782010)
#include <cstdio>
#include <cstdlib>
using namespace std;
FILE *f = fopen("deque.in", "r");
FILE *g = fopen("deque.out", "w");
int main()
{
int n, k, prim = 1, ultim = 0;
long long int rez = 0;
fscanf(f, "%d %d", &n, &k);
int *v = (int*)calloc(n + 1, sizeof(int));
int *Deque = (int*)calloc(n + 1, sizeof(int));
for (int i = 1; i <= n; i++)
fscanf(f, "%d", &v[i]);
for (int i = 1; i <= n; i++)
{
while (prim <= ultim && v[i] <= v[Deque[ultim]])
ultim--;
Deque[++ultim] = i;
if (Deque[prim] == i - k)
prim++;
if (i >= k)
rez += v[Deque[prim]];
}
fprintf(g, "%lld", rez);
return 0;
}