Cod sursa(job #3170590)

Utilizator Rares0netOnet Rares-Petru Rares0net Data 17 noiembrie 2023 19:49:29
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
//Rares 0net
using namespace std;
#ifdef RS
#define RS
#endif
#ifdef RS
    #include "Rares0.hpp"
#else
    #include<vector>
    #include<numeric>
    #include<fstream>
    #include<algorithm>
    const string N_file="transport";
    ifstream fin(N_file+".in");
    ofstream fout(N_file+".out");
    #define cin fin
    #define cout fout
    #define endl "\n"
    #define INF 0x3f3f3f3f
#endif
void RSinit()
{
    cin.tie(0)->sync_with_stdio(false);
    cout.tie(0);
}
int n, k;
vector<int>v;
bool PotTransporta(int cap)
{
    int nrTrans=1, currCap=0;
    for(int i=0; i<n; ++i)
        if(currCap+v[i]<=cap)
            currCap+=v[i];
        else
        {
            currCap=v[i];
            ++nrTrans;
            if(nrTrans>k)
                return false;
        }
    return true;
}
void Read()
{
    cin>>n>>k;
    v.resize(n);
    for(int &nr:v)
        cin>>nr;
}
void Solve()
{
    int st=*max_element(v.begin(), v.end());
    int dr=accumulate(v.begin(), v.end(), 0);
    while(st<dr)
    {
        int mid =(st+dr)>>1;
        if(PotTransporta(mid))
            dr=mid;
        else
            st=mid+1;
    }
    cout<<st;
}
main()
{
    RSinit();
    Read();
    Solve();
}