Cod sursa(job #1215983)

Utilizator rangerChihai Mihai ranger Data 2 august 2014 23:37:45
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
using namespace std;

ifstream cin("transport.in");
ofstream cout("transport.out");

const int NMAX = 16010;

int n,k,a[NMAX],i,s=0;

int C(int l, int r);
bool ok(int x);

int main()
{
    cin>>n>>k;
    for (i=1;i<=n;i++) cin>>a[i], s+=a[i];
    cout<<C(1,s);
    return 0;
}

bool ok(int x)
{
    int i,k1=1,sum=0;
    for (i=1;i<=n;i++)
    {
        sum+=a[i];
        if (sum>x)
        {
            sum=a[i];
            ++k1;
        }
    }
    return (k1<=k);
}

int C(int l, int r)
{
    int sol;
     while (l<=r)
     {
         int m=(l+r)/2;
         if (ok(m))
         {
             sol=m;
             r=m-1;
         } else
            l=m+1;
     }
     return sol;
}