Cod sursa(job #2680652)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 3 decembrie 2020 20:45:49
Problema Deque Scor 25
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <stdlib.h>

int v[5000000],p[5000000];
int main()
{
  int n,k,i,st,dr,s,j,a;
  FILE *fin, *fout;

  fin=fopen("deque.in","r");
  fscanf(fin,"%d%d",&n,&k);

  st=0;
  dr=0;
  for(i=0;i<k;i++){
    fscanf(fin,"%d",&a);
    while(dr>st && a<=v[dr-1])
      dr--;

    v[dr]=a;
    p[dr]=i;
    dr++;

//    for(j=st;j<dr;j++)
//      printf("%d ",v[j]);
//    printf("\n");
  }

  s=v[st];
  for(;i<n;i++){
    if(i-k>=p[st])
      st++;

    fscanf(fin,"%d",&a);
    while(dr>st && a<=v[dr-1])
      dr--;

    v[dr]=a;
    p[dr]=i;
    dr++;

    s+=v[st];

//    for(j=st;j<dr;j++)
//      printf("%d ",v[j]);
//    printf("\n");
  }
  fclose(fin);

  fout=fopen("deque.out","w");
  fprintf(fout,"%d",s);
  fclose(fout);
  return 0;
}