Pagini recente » Cod sursa (job #1387785) | Cod sursa (job #1907805) | Cod sursa (job #1094124)
#include <fstream>
#include <vector>
using std::vector;
inline bool destul(unsigned c, unsigned k, const vector<unsigned> &vol){
unsigned i=0,nr=1, curr=0;
for(;i<vol.size()&&nr<=k;++i){
curr+=vol[i];
if(curr>c){ nr++; curr=0; --i; }
}
if(nr>k) return false;
else return true;
}
int main(){
std::ifstream fin("transport.in");
std::ofstream fout("transport.out");
unsigned n,k;
fin>>n>>k;
unsigned lo=0,hi=0;
std::vector<unsigned> vol(n);
for(unsigned i=0;i<n;++i){
fin>>vol[i];
hi+=vol[i];
if(vol[i]>lo) lo=vol[i];
}
while(lo!=hi){
unsigned m=(lo+hi)/2;
if(destul(m,k,vol)) hi=m;
else lo=m+1;
}
fout<<lo<<'\n';
}