Pagini recente » Cod sursa (job #731038) | Cod sursa (job #584429) | Cod sursa (job #2361719) | Cod sursa (job #1752682) | Cod sursa (job #1691837)
#include <iostream>
#include <cstdio>
#define N 50000001
using namespace std;
FILE *f, *g;
int v[N], d[N],k , n, st, dr = -1, sum;
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 += v[d[st]];
}
fprintf(g, "%d", sum);
fclose(f);
fclose(g);
return 0;
}