Pagini recente » Cod sursa (job #293073) | Cod sursa (job #1976234) | Cod sursa (job #2451902) | Cod sursa (job #2141786) | Cod sursa (job #537139)
Cod sursa(job #537139)
#include<stdio.h>
using namespace std;
typedef struct
{
long int poz;
long int val;
} numar;
long int n;
long int i;
long int Front;
long int Back;
long int k;
numar Deck[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);
while(Front<=Back && a<=Deck[Back].val) Back --;
Deck[++Back].poz = i;
Deck[Back].val = a;
if(Deck[Front].poz == i-k) Front ++;
if(i>=k) sum += Deck[Front].val;
}
fclose(f);
}
int main()
{
FILE *f = fopen("deque.out","w");
citire();
fprintf(f,"%lld",sum);
fclose(f);
return 0;
}