Cod sursa(job #3324401)

Utilizator RaresPanuPanu Rares RaresPanu Data 22 noiembrie 2025 10:40:17
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int v[16001];

bool good(int m,int n,int k){
    int sum=0,cnt=1;
    for(int i=0;i<n;i++){
        sum+=v[i];
        if(sum>m){
            sum=v[i];
            cnt++;
        }
    }
    if(sum>m){
        sum=0;
        cnt++;
    }
    if(cnt>k){
        return 0;
    }
    return 1;
}

int main()
{
    int n,k,maxim=0;
    fin>>n>>k;
    for(int i=0;i<n;i++){
        fin>>v[i];
        maxim=max(maxim,v[i]);
    }
    int st=maxim,dr=maxim*n,rez=maxim*n+1;
    while(st<=dr){
        int m=(st+dr)/2;
        if(good(m,n,k)==1){
            rez=m;
            dr=m-1;
        }else{
            st=m+1;
        }
    }
    fout<<rez;
    return 0;
}