Pagini recente » Cod sursa (job #686066) | Cod sursa (job #818085) | Cod sursa (job #1293925) | Cod sursa (job #2036232) | Cod sursa (job #2018455)
#include<cstdio>
#define MAX_N 5000000
using namespace std;
int v[MAX_N+1], deck[MAX_N+1], n, k;
long long sum;
int main()
{
int Front, Back, i;
FILE *fin, *fout;
fin = fopen("deque.in","r");
fout = fopen("deque.out","w");
fscanf(fin,"%d%d",&n,&k);
for(i=1; i<=n; i++)
fscanf(fin,"%d",&v[i]);
Front = 1; Back = 0;
for(i=1; i<=n; i++)
{
while(Front <= Back && v[i] <= v[deck[Back]])
Back--;
deck[++Back] = i;
if(deck[Front] == i - k)
Front++;
if(i >= k)
sum += v[deck[Front]];
}
fprintf(fout,"%lld\n",sum);
fclose(fin);
fclose(fout);
return 0;
}