Cod sursa(job #1490970)

Utilizator iomanea2002isaIoana Manea iomanea2002 Data 24 septembrie 2015 15:50:48
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include <stdio.h>
int m[5000000];
int v[5000000];
int n, k, st=0, dr=-1, i;
void sn(int i){
  if(m[st]==i-k)
    st++;
}
void dt(int i){
  while(st<=dr && v[i]<v[m[dr]])
    dr--;
  m[++dr]=i;
}

int main()
{FILE *fin, *fout;
 fin=fopen("deque.in", "r");
 fout=fopen("deque.out", "w");
 fscanf(fin, "%d %d", &n, &k);
 long long sum=0;
 for(i=0;i<n;i++){
   fscanf(fin, "%d", &v[i]);
   if(i>=k)
     sn(i);
   dt(i);
   if(i>=k-1)
     sum+=v[m[st]];
 }
 fprintf(fout, "%d ", sum);
    return 0;
}