Cod sursa(job #2071248)

Utilizator darkviper17Dark Viper darkviper17 Data 20 noiembrie 2017 15:10:52
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int L=30, n, v[16002], k;

bool is_valid(int c)
{
  int nr=0, cc=0, i;
  
    for(i = 0; i < n; i++)
    {
      if(v[i] > cc)
      {
        nr++;
        cc = c;
      }
      
      if(v[i] > cc) return false;
        
      cc -= v[i];
    }
    
    return (nr <= k); 
}

int binary_search(int x)
{
  int pas = 1 << L , r=0;
    while(pas)
    {
      if( !is_valid(r + pas) ) r+=pas;
        pas /= 2;
    }
    
    return r + 1;
}

int main()
{
  int i;
  fin >> n >> k;
  
  for(i = 0; i < n; i++)
  {
    fin >> v[i];
  }
  
    fout << binary_search(k);
}