Cod sursa(job #3363619)

Utilizator PetruRigaRiga-Fereu Petru Vlad PetruRiga Data 19 august 2026 19:19:30
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX=16000;
int n,k,v[NMAX];
bool isvalidsize(int cap)
{
    int tr=1,dim,i;
    dim=cap;
    for(i=0;i<n && tr<=k;i++)
    {
        if(dim>=v[i])
            dim=dim-v[i];
        else
        {
            tr++;
            dim=cap-v[i];
        }
    }
    return tr<=k;
}
int searchbin(int max, int sum)
{
    int st,mij,dr;
    st=max-1;
    dr=sum;
    while(dr-st>1)
    {
        mij=(st+dr)/2;
        if(isvalidsize(mij))
            dr=mij;
        else
            st=mij;
    }
    return dr;
}
int main()
{
    ifstream fin("transport.in");
    ofstream fout("transport.out");
    fin>>n>>k;
    int maxi=-1,sum=0;
    for(int i=0;i<n;i++)
    {
        fin>>v[i];
        if(v[i]>maxi)
            maxi=v[i];
        sum=sum+v[i];
    }
    fout<<searchbin(maxi,sum);
    return 0;
}