Cod sursa(job #3330038)

Utilizator andrei_10Andrei Paul Untaru andrei_10 Data 17 decembrie 2025 11:00:10
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

#define DIM 16003
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");


int v[DIM];


int main()
{
  int n,k,Max,s;
    fin>>n>>k;
    s=0;
    Max=0;
    for(int i=1;i<=n;i++){
        fin>>v[i];
        if(v[i]>Max)
            Max=v[i];
        s=s+v[i];  ///caut binar capacitatea camionului pe intervalul [max, s]
    }
    int st=Max, dr=s, sol=0;
    while(st<=dr){
       int mid=(st+dr)/2; /// am fixat capacitatea minima. Dtermin cate transporturi fac
       int nr=1, sum=0;
       for(int i=1;i<=n;i++){
        if(sum + v[i] <= mid)
            sum=sum+v[i];
        else{
            nr++;
          sum=v[i];
        }

       }
       if(nr<=k){
        sol=mid;
        dr=mid-1;
       }
       else
        st=mid+1;

    }
    fout<<sol;

    return 0;
}