Cod sursa(job #628697)

Utilizator blue_phoenixPosea Elena blue_phoenix Data 1 noiembrie 2011 22:01:13
Problema Deque Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#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;
}