Cod sursa(job #2723884)

Utilizator Luca_Miscocilucainfoarena Luca_Miscoci Data 15 martie 2021 19:02:58
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda luca_oji4 Marime 0.92 kb
#include <iostream>
#include <stdio.h>
#define NMAX 16000
using namespace std;
int n, k, v[NMAX + 1];
FILE *fin = fopen ("transport.in","r");
FILE *fout = fopen ("transport.out", "w");

bool verif (int a){
  for (int i = 0; i < n; i++){
    fscanf (fin, "%d", &v[i]);
  }
  int s = 0;
  int cnt = 1;
  for (int i = 0; i < n; i++){
    if (s + v[i] <= a)
      s += v[i];
    else{
      cnt ++;
      if (a >= v[i])
        s = v[i];
      else
        return 0;
    }
  }
  if (cnt <= k)
    return 1;
  return 0;
}

int main(){

  int n, k;
  fscanf (fin, "%d%d", &n, &k);

  for (int i = 0; i < n; i++){
    fscanf (fin, "%d", &v[i]);
  }
  int st = 1;
  int dr = n * NMAX;
  int mid;
  int rez;
  while (st < dr){
    mid = (st + dr) / 2;
    if (verif (mid) == 0)
      st = mid + 1;
    else{
      dr = mid - 1;
      rez = mid;
    }
  }
  fprintf (fout, "%d", rez);
  return 0;
}