Cod sursa(job #2670929)

Utilizator codicaMaria Lovin codica Data 10 noiembrie 2020 22:47:14
Problema Transport Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 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];
    }
    if (k==0)
        fout<<0;
    else if (k==1)
        fout<<sum;
    else if (n<=k)
        fout<<maxi;
    else
    {
        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;
}