Cod sursa(job #2228624)

Utilizator BarbumateiBarbu Matei Barbumatei Data 4 august 2018 14:27:21
Problema Deque Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#include <stdlib.h>
#define NMAX 5000000
int v[NMAX], deque[NMAX], start, stop;

void push( int poz ) {
  while ( start < stop && v[deque[stop - 1]] > v[poz] )
    stop--;
  deque[stop++] = poz;
}

int main() {
  FILE *fin, *fout;
  fin = fopen( "deque.in", "r" );
  fout = fopen( "deque.out", "w" );
  int n, k, i;
  fscanf( fin, "%d%d", &n, &k );
  for ( i = 0; i < k; i++ ) {
    fscanf( fin, "%d", &v[i] );
    push( i );
  }
  long long suma = v[deque[start]];
  for ( i = k; i < n; i++ ) {
    fscanf( fin, "%d", &v[i] );
    if ( deque[start] == i - k )
      start++;
    push( i );
    suma += v[deque[start]];
  }
  fprintf( fout, "%lld\n", suma );
  fclose( fin );
  fclose( fout );
    return 0;
}