Pagini recente » Cod sursa (job #3246615) | Cod sursa (job #1223103) | Cod sursa (job #1018138) | Cod sursa (job #573781) | Cod sursa (job #537143)
Cod sursa(job #537143)
#include<stdio.h>
using namespace std;
long int n;
long int i;
long int Front;
long int Back;
long int k;
long int Deck[5000001];
long int A[5000001];
long long sum;
void citire(void)
{
long int a;
FILE *f = fopen("deque.in","r");
fscanf(f,"%d %d",&n,&k);
Front = 1; Back = 0;
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&A[i]);
while(Front<=Back && A[i]<=A[Deck[Back]]) Back --;
Deck[++Back] = i;
if(Deck[Front] == i-k) Front ++;
if(i>=k) sum += A[Deck[Front]];
}
fclose(f);
}
int main()
{
FILE *f = fopen("deque.out","w");
citire();
fprintf(f,"%lld",sum);
fclose(f);
return 0;
}