Cod sursa(job #1486721)

Utilizator bogdanboboc97Bogdan Boboc bogdanboboc97 Data 15 septembrie 2015 14:59:26
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int a[16006],n,k;
bool check(int cap)
{
    int cnt=0,s=0;
    for(int i=1;i<=n;i++)
    {
        s+=a[i];
        if(s>cap)
        {
            s=a[i];
            cnt++;
        }
    }
    return (cnt<k);
}
int main()
{
    in>>n>>k;
    for(int i=1;i<=n;i++)
        in>>a[i];
    int left=1,right=16000,sol=16000;
    while(left<=right)
    {
        int mid=(left+right)/2;
        bool ok=check(mid);
        if(ok==true)
        {
            sol=min(mid,sol);
            right=mid-1;
        }
        else if(ok==false)
            left=mid+1;
    }
    out<<sol<<'\n';
    return 0;
}