Pagini recente » Cod sursa (job #2350873) | Cod sursa (job #3167335) | Cod sursa (job #2462110) | Cod sursa (job #1680104) | Cod sursa (job #399375)
Cod sursa(job #399375)
#include<stdio.h>
long n,v[5000001],deque[5000001],k;
long long sum;
FILE *f;
void read ()
{
f=fopen("deque.in","r");
fscanf(f,"%ld%ld",&n,&k);
long i;
for (i=1;i<=n;++i)
fscanf(f,"%ld",&v[i]);
fclose(f);
}
void solve ()
{
long i,inc,sf;
inc=1;
sf=0;
for (i=1;i<=n;++i)
{
//eliminam elementele mai mari
while (inc<=sf && v[i]<=v[deque[sf]])
--sf;
//adaug elemntul
deque[++sf]=i;
//daca e depasit minimul, il scot
if (deque[inc]==i-k)
++inc;
if (i>=k)
sum+=v[deque[inc]];
}
f=fopen("deque.out","w");
fprintf(f,"%lld",sum);
fclose(f);
}
int main ()
{
read ();
solve ();
return 0;
}