Pagini recente » Cod sursa (job #3137229) | Cod sursa (job #2442590) | Cod sursa (job #3182191) | Cod sursa (job #2096165) | Cod sursa (job #1418231)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 5000000
int stiv[MAXN],poz[MAXN],v[MAXN];
int main(){
FILE*fi,*fout;
int istiv,k,n,e,b,i;
long long s;
fi=fopen("deque.in" ,"r");
fout=fopen("deque.out" ,"w");
fscanf(fi,"%d%d" ,&n,&k);
for(i=0;i<n;i++)
fscanf(fi,"%d" ,&v[i]);
istiv=-1;
for(i=0;i<k;i++){
while(istiv>=0&&stiv[istiv]>=v[i])
istiv--;
stiv[++istiv]=v[i];
poz[istiv]=i;
}
b=0;
e=istiv;
s=stiv[b];
for(i=k;i<n;i++){
if(poz[b]<i-k+1)
b++;
while(e>=b&&stiv[e]>=v[i])
e--;
stiv[++e]=v[i];
poz[e]=i;
s=s+stiv[b];
}
fprintf(fout,"%lld" ,s);
fclose(fi);
fclose(fout);
return 0;
}