Cod sursa(job #2451748)

Utilizator Tudor06MusatTudor Tudor06 Data 28 august 2019 00:12:51
Problema Deque Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>

int v[5000000];
int coada[5000000];

int main() {
  FILE *fin = fopen( "deque.in", "r" ), *fout = fopen( "deque.out", "w" );
  int n, k, i, j, st, dr;
  long long s;
  fscanf( fin, "%d%d", &n, &k );
  for ( i = 0; i < n; i ++ ) {
    fscanf( fin, "%d", &v[i] );
  }
  st = 0;
  dr = 0;
  for ( i = 0; i < k; i ++ ) {
    while ( dr > st && v[coada[dr - 1]] >= v[i] ) {
      dr --;
      coada[dr] = 0;
    }
    coada[dr] = i;
    dr ++;
  }
  s = v[coada[st]];
  for ( i = k; i < n; i ++ ) {
    while ( dr > st && v[coada[dr - 1]] >= v[i] ) {
      dr --;
      coada[dr] = 0;
    }
    coada[dr] = i;
    dr ++;
    if ( i - coada[st] >= k ) {
      st ++;
    }
    s += v[coada[st]];
  }
  fprintf( fout, "%lld", s );
  fclose( fin );
  fclose( fout );
  return 0;
}