Pagini recente » Cod sursa (job #1804685) | Cod sursa (job #1867750) | Cod sursa (job #2356950) | Istoria paginii utilizator/malexandru | Cod sursa (job #628702)
Cod sursa(job #628702)
#include <stdio.h>
#define maxk 5000005
struct nod{
int nr,loc;
}coada[maxk];
int li=0,ls=0;
long long suma=0;
int main(){
int n,k;
FILE *fin=fopen("deque.in","r");
fscanf(fin,"%d%d",&n,&k);
int i,aux;
fscanf(fin,"%d",&aux);
coada[0].nr=aux;
coada[0].loc=0;
for(i=1;i<n;i++){
fscanf(fin,"%d",&aux);
while(ls<=li && aux<coada[li].nr)li--;
coada[++li].nr=aux;
coada[li].loc=i;
if(coada[ls].loc==i-k)ls++;
if(i>=(k-1)) {suma+=coada[ls].nr; /*printf("minimul din setul care incepe la %d este %d\n",i,coada[ls].nr);*/}
//afisez coada
//for(int j=ls;j<=li;j++)printf("%d ",coada[j].nr);
//printf("\n");
}
FILE *fout=fopen("deque.out","w");
fprintf(fout,"%lld\n",suma);
return 0;
}