Cod sursa(job #2670889)

Utilizator Ioana.PlugaruPlugaru Ioana Ioana.Plugaru Data 10 noiembrie 2020 21:12:06
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>

using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int v[16001],n,k,i,tr,maxi;
long sum,s,mini,r,mid,l;
int main()
{
    fin>>n>>k;
    for (i=1;i<=n;i++)
    {
        fin>>v[i];
        sum=sum+v[i];
        if (v[i]>maxi)
            maxi=v[i];
    }
    l=maxi;
    r=sum;
    mini=sum;
    while (l<r)
    {
        tr=0;
        mid=(l+r)/2;
        i=1;
        while (i<=n)
        {
            s=0;
            while (s+v[i]<=mid && i<=n)
            {
               s=s+v[i];
               i++;
            }
            tr++;
        }
        if (tr<k) r=mid;
        else if (tr>k) l=mid+1;
        else
        {
            r=mid;
            if (mid<mini)
                mini=mid;
        }
    }
    fout<< mini;
    return 0;
}