Pagini recente » Cod sursa (job #1334541) | Cod sursa (job #2831557) | Cod sursa (job #2422893) | Cod sursa (job #3183763) | Cod sursa (job #955311)
Cod sursa(job #955311)
#include <stdio.h>
int deque[5000000],d[5000000];
int dreapta(int st,int dr, int a)
{
int i;
i=dr-1;
while(deque[i]>=a&&i>=st)
{
i--;
}
i++;
return i;
}
int main()
{
FILE *in,*out;
int n,k,i,st=0,dr=-1,a;
long long rez=0;
in=fopen("deque.in","r");
out=fopen("deque.out","w");
fscanf(in,"%d%d",&n,&k);
for(i=0;i<n;i++)
{
dr++;
d[dr]=i;
fscanf(in,"%d",&a);
deque[dr]=a;
if(i!=0)
{
while(d[dr]-d[st]+1>k) st++;
dr=dreapta(st,dr,a);
d[dr]=i;
deque[dr]=a;
}
if(i+1>=k)
{
rez+=deque[st];
}
}
fprintf(out,"%lld",rez);
return 0;
}