Cod sursa(job #1508500)

Utilizator tqmiSzasz Tamas tqmi Data 22 octombrie 2015 17:25:06
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int a[16005],n,k,i,vol,c,mid,l,r,s,m;
void cit()
{
    fin>>n>>k;
    for(i=1;i<=n;i++)
    {
        fin>>a[i];
        m=max(m,a[i]);
    }
}
int check()
{
    c=0;vol=0;
    for(i=1;i<=n;i++)
    {
        if(vol+a[i]<=mid)
        {
            vol+=a[i];
        }
        else
        {
            c++;
            vol=a[i];
        }
    }
    if(c+1>k){return 0;}
    else{return 1;}
}
int main()
{
    cit();
    l=m;r=16005*16005;
    mid=(l+r)/2;
    if(k==n){s=m;}
    else{
    while(l<r)
    {
        if(check()){r=mid;s=mid;}
        else{l=mid+1;}
        mid=(l+r)/2;
    }}
    fout<<s<<"\n";

}