Pagini recente » Cod sursa (job #1118005) | Cod sursa (job #2251925) | Cod sursa (job #1524121) | Cod sursa (job #207206) | Cod sursa (job #1691839)
#include <iostream>
#include <cstdio>
#define N 50000001
using namespace std;
FILE *f, *g;
long long v[N], d[N], 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, "%lld", &v[i]);
for (i = 1; i <= n; i ++)
{
if (i > k)
stanga(i);
dreapta(i);
if (i >= k)
sum += v[d[st]];
}
fprintf(g, "%lld", sum);
fclose(f);
fclose(g);
return 0;
}