Cod sursa(job #2297024)

Utilizator stef2003Bud Stefan stef2003 Data 5 decembrie 2018 10:39:46
Problema Transport Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <iostream>
#include <cstdio>

using namespace std;

int n, k;
int v[16001];

int verif(int a) {
  int i, x=1, s=0;
  for(i=1;i<=n;i++) {
    if(s+v[i]<=a)
      s+=v[i];
    else {
      s=v[i];
      x++;
    }
  }
  if(x<=k)
    return 1;
  return 0;
}

int main() {
  FILE *fin, *fout;
  int st, dr, u, i;
  fin=fopen("transport.in","r");
  fout=fopen("transport.out","w");
  fscanf(fin, "%d%d",&n,&k);
  for(i=1;i<=n;i++)
    fscanf(fin, "%d",&v[i]);
  st=1;
  dr=256000000;
  u=256000000;
  while(st<=dr) {
    u=(st+dr)/2;
    if(verif((st+dr)/2)==1)
      dr=(st+dr)/2-1;
    else
      st=(st+dr)/2+1;
  }
  fprintf(fout, "%d",u);
  return 0;
}