Cod sursa(job #2666240)

Utilizator YusyBossFares Yusuf YusyBoss Data 1 noiembrie 2020 11:30:03
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <stdio.h>
#define NMAX 5000000

using namespace std;

int deque[NMAX + 1], v[NMAX + 1];

int main() {
  FILE *fin, *fout;
  int n, k, i, st, dr, lung, sum;

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

  lung = st = 0;
  dr = -1;
  sum = 0;
  for (i = 0; i < n; i++) {
    fscanf(fin, "%d", &v[i]);

    if (i - k == deque[st]) {
      st++;
      lung--;
    }

    while (lung > 0 && v[i] <= v[deque[dr]]) {
      dr--;
      lung--;
    }

    dr++;
    deque[dr] = i;
    lung++;

    if (i >= k - 1)
      sum += v[deque[st]];
  }

  fclose( fin );

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