Cod sursa(job #3185326)

Utilizator RaresHRares Hanganu RaresH Data 18 decembrie 2023 18:51:43
Problema Transport Scor 80
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>

#define MAXVOL 16000
#define MAXN 16000

int stiva[MAXN];

int main() {
  FILE *fin, *fout;
  int n, k, i, st, dr, mij, c, cnt;

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

  st = 0;
  dr = MAXVOL * MAXN;
  while(dr - st > 1) {
    mij = (st + dr) / 2;
    c = 0;
    cnt = 1;
    for(i = 0; i < n; i++) {
      if(c + stiva[i] <= mij) {
        c += stiva[i];
      } else {
        c = stiva[i];
        cnt++;
      }
    }

    if(cnt > k) {
      st = mij;
    } else {
      dr = mij;
    }
  }

  fout = fopen("transport.out", "w");
  fprintf(fout, "%d\n", dr);
  fclose(fout);

  return 0;
}