Cod sursa(job #3213324)

Utilizator winemomComan Erin winemom Data 12 martie 2024 21:37:58
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
long long n,k, numere[16005];
bool verif(int cap)
{
    long long s=0, sol=1;
    for(int i=1; i<=n; i++)
        if(s+numere[i] > cap)
            sol++, s=numere[i];
        else
            s+=numere[i];

    if(sol <= k)
        return true;
    return false;
}

int main()
{
    int maxi=0, sum=0, sol;
    cin>>n>>k;
    for(int i=1; i<=n; i++)
    {
        cin>>numere[i];
        if(numere[i] > maxi)
            maxi=numere[i];
        sum+=numere[i];
    }
    long long st=maxi, dr=sum;
    while(st <= dr)
    {
        long long mid=st+(dr-st)/2;
        if(verif(mid) == true)
            sol=mid, dr=mid-1;
        else
            st=mid+1;
    }
    cout<<sol;
    return 0;
}