Cod sursa(job #3324019)

Utilizator calinulCalin Cernat calinul Data 20 noiembrie 2025 18:39:04
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

FILE *fin, *fout;

const int NMAX = 5'000'000, KMAX = 5'000'000;
int deq[KMAX], a[NMAX];

int rInt() {
  int rez = 0, ch, p = 1;
  while ( isspace( ch = fgetc( fin ) ) );
  if ( ch == '-' ) {
    p = -1;
    ch = fgetc( fin );
  }
  do
    rez = rez * 10 + ch - '0';
  while ( isdigit( ch = fgetc( fin ) ) );
  return rez * p;
}

int main() {
  long long sum = 0;
  int n, k, i, prim = 0, ultim = 0;

  fin = fopen( "deque.in", "r" );
  n = rInt(), k = rInt();
  for ( i = 1; i <= n; i++ ) {
    a[i] = rInt();
    while ( ultim != prim && deq[ultim - 1] > a[i] )
      ultim--;
    deq[ultim++] = a[i];

    if ( i >= k ) {
      sum += deq[prim];
      if ( deq[prim] == a[i - k + 1] )
        prim++;
    }
  }
  fclose( fin );

  fout = fopen( "deque.out", "w" );
  fprintf( fout, "%lld\n", sum );
  fclose( fout );

  return 0;
}