Cod sursa(job #2353421)

Utilizator AndreibatmanAndrei Croitoriu Andreibatman Data 24 februarie 2019 11:54:00
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>
#define NMAX 16001

using namespace std;

ifstream f ("transport.in");
ofstream g ("transport.out");

int n , k , i , mini = NMAX;
int a[NMAX];

bool ok(int c){
  int ko = k , cc = c;
  for(i=1;i<=n;i++)
    if(a[i] <= cc)
    cc -= a[i];
    else{
        ko--;
      if(ko <= 0)return false;
      cc = c - a[i];
    }
    return true;
}

int cautare_bin()
{
    int mij = 0, st = 1 , dr = NMAX * NMAX;
    while(st <= dr)
    {
        mij = (dr - st)/ 2 + st;
        if(ok(mij))mini = mij , dr = mij - 1;
        else st = mij + 1;
    }
    return mini;
}

int main()
{
    f>>n>>k;
    for(i=1;i<=n;i++)f>>a[i];
    g<<cautare_bin();
    return 0;
}