Cod sursa(job #3138549)

Utilizator RaresHRares Hanganu RaresH Data 20 iunie 2023 12:13:11
Problema Secventa 2 Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>

#define MAXN 50000
#define MINS -1250000000

int sume[MAXN + 1];
int maxs[MAXN];
unsigned short dr[MAXN];

int main() {
  FILE *fin, *fout;
  int n, k, i, rez_st, rez_dr, max;

  fin = fopen("secv2.in", "r");
  fscanf(fin, "%d%d", &n, &k);
  for(i = 0; i < n; i++) {
    fscanf(fin, "%d", &sume[i + 1]);
    sume[i + 1] += sume[i];
  }
  fclose(fin);

  maxs[n - k] = sume[n];
  dr[n - k] = n - 1;
  for(i = n - k - 1; i >= 0; i--)
    if(sume[i + k] > maxs[i + 1]) {
      maxs[i] = sume[i + k];
      dr[i] = i + k - 1;
    } else {
      maxs[i] = maxs[i + 1];
      dr[i] = dr[i + 1];
    }

  max = MINS - 1;
  for(i = 0; i <= n - k; i++)
    if(maxs[i] - sume[i] > max) {
      max = maxs[i] - sume[i];
      rez_st = i;
      rez_dr = dr[i];
    }

  fout = fopen("secv2.out", "w");
  fprintf(fout, "%d %d %d\n", rez_st + 1, rez_dr + 1, max);
  fclose(fout);

  return 0;
}