Cod sursa(job #3138051)

Utilizator RaresHRares Hanganu RaresH Data 17 iunie 2023 11:55:26
Problema Secventa Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>

#define MAXN 500000
#define MAXNR 30000
#define MINNR -30000

short v[MAXN];
int vf[MAXNR - MINNR + 1];

int main() {
  FILE *fin, *fout;
  int n, k, i, j, in, sf, max, min;

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

  max = MINNR - 1;
  for(i = 0; i <= n - k; i++) {
    if(i > 0) {
      vf[v[i - 1] + MAXNR]--;
      vf[v[i + k - 1] + MAXNR]++;
    } else {
      for(j = 0; j < k; j++)
        vf[v[j] + MAXNR]++;
    }

    j = 0;
    while(j <= MAXNR - MINNR && vf[j] == 0) {
      j++;
    }
    min = j - MAXNR;

    if(min > max) {
      max = min;
      in = i;
      sf = i + k - 1;
    }
  }

  fout = fopen("secventa.out", "w");
  fprintf(fout, "%d %d %d\n", in + 1, sf + 1, max);
  fclose(fout);

  return 0;
}