Cod sursa(job #3297106)

Utilizator SGLDCASA SI PODUL SGLD Data 21 mai 2025 09:39:12
Problema Transport Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>

using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int arr[16001];
int k,n;
bool funct(int a)
{
    int start=1,p=1;
    while(start<=n)
    {
        int sum=0;
        for(int i=start; i<=n; i++)
        {
            if(sum+arr[i]<=a && i<n)
            {
                sum=sum+arr[i];
            }
            else if(sum+arr[i]>a)
            {
                start=i;
                p++;
                if(p>k){
                return false;
                }
                break;
            }
            if(i==n){
            start=n+1;
            }
        }
    }
    if(p<=k)
    {
        return true;
    }
    else
    {
        return false;
    }

}
int main()
{
    int m,ans=-1;
    in>>n>>k;
    for(int i=1; i<=n; i++)
    {
        in>>arr[i];
    }
    int l=1,r=n+4;
    while(l<=r)
    {
        int mid=(l+r)/2;
        if(funct(mid))
        {
            r=mid-1;
            ans=mid;
        }
        else
        {
            l=mid+1;
        }
    }
    out<<ans;
    return 0;
}