Pagini recente » Cod sursa (job #2618255) | Cod sursa (job #1458245) | Cod sursa (job #626431) | Cod sursa (job #1430349) | Cod sursa (job #804275)
Cod sursa(job #804275)
#include <stdio.h>
#include <stdlib.h>
int v[5000001];
int dq[5000001];
int dr,st,i,k,n;
void stanga(int i)
{
if(i-dq[st]==k)
st++;
}
void dreapta(int i)
{
while(dr>=st && v[i]<=v[dq[dr]])
dr--;
dq[++dr]=i;
}
int main()
{
FILE *in, *out;
in=fopen("deque.in","r");
out=fopen("deque.out","w");
long long s = 0;
fscanf(in,"%d%d",&n,&k);
for(i=1;i<=n;i++)
fscanf(in,"%d",&v[i]);
for(i=1;i<k;i++)
dreapta(i);
for(i=k;i<=n;i++)
{
stanga(i);
dreapta(i);
s+=v[dq[st]];
}
fprintf(out,"%d\n",s);
return 0;
}