Cod sursa(job #2418908)

Utilizator munteanue28no one munteanue28 Data 6 mai 2019 19:45:14
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
 
using namespace std;
 
ifstream in("transport.in");
ofstream out("transport.out");
 
const int N=16002;
 
int maxim,k,n;
 
int v[N];
 
bool isOk(int c)
{
    if(maxim>c)
    {
        return false;
    }
    int sc=0;
    int t=1;
    for(int i=1;i<=n;++i)
    {
        if(v[i]+sc<=c)
        {
            sc+=v[i];
        }
        else
        {
            t++;
            sc=v[i];
        }
    }
    return (t<=k);
}
 
int binarySearch()
{
    int pas=1<<30;
    int ans=0;
    while(pas)
    {
        if(!isOk(ans+pas))
        {
            ans+=pas;
        }
        pas/=2;
    }
    return ans+1;
}
 
int main()
{
    in>>n>>k;
    for(int i=1;i<=n;++i)
    {
        in>>v[i];
        maxim=max(maxim,v[i]);
    }
    out<<binarySearch();
    return 0;
}