Pagini recente » Cod sursa (job #613919) | Cod sursa (job #2083459) | Cod sursa (job #1040634) | Cod sursa (job #1191879) | Cod sursa (job #3170590)
//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();
}