Pagini recente » Cod sursa (job #919155) | Cod sursa (job #115114) | Cod sursa (job #22626) | Cod sursa (job #2700080) | Cod sursa (job #628697)
Cod sursa(job #628697)
#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;
for(i=0;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;
}