Cod sursa(job #2979560)

Utilizator Vlad10Vlad Negut Vlad10 Data 15 februarie 2023 15:31:27
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int v[30001];
int n,k,i,st,dr,m,x,vmax=-1,sum=0,sol=0;
int calz(int cap)
{
    int j,s=0,zile=0;
    for(j=1;j<=n;j++)
    {
        if(s+v[j]<=cap)
        {
            s+=v[j];
        }
        else if(s+v[j]>cap)
        {
            zile++;
            s=v[j];
        }
    }
    if(s>0)
        zile++;
    return zile;
}
int main()
{
    fin>>n>>k;
    sum=0;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
        sum+=v[i];
        if(v[i]>vmax)
            vmax=v[i];
    }
    st=vmax;
    dr=sum;
    while(st<=dr)
    {
        m=(st+dr)/2;
        x=calz(m);
        if(x>k)
        {
            st=m+1;
        }
        else{
            dr=m-1;
            sol=m;
        }
    }
    fout<<sol;
    return 0;
}