Pagini recente » Cod sursa (job #1025293) | Cod sursa (job #2318049) | Cod sursa (job #2824343) | Cod sursa (job #1083160) | Cod sursa (job #2793638)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
const int NMAX = 16005;
int n, k, maxi, v[NMAX];
int howMany(int capacitate)
{
int nr_trans = 1, s=0;
for(int i=1; i<=n; i++)
{
s += v[i];
if(s > capacitate)
s = v[i], nr_trans++;
}
return nr_trans;
}
int main(int argc, const char * argv[]) {
cin>>n>>k;
for(int i=1; i<=n; i++)
cin>>v[i], maxi=max(maxi, v[i]);
int x=1;
for(int i=1; i<=6; i++)
x*=10;
int left = maxi, right = 256 * x, sol = 0;
while(left <= right)
{
int mid = (left+right)/2;
int t = howMany(mid);
if(t <= k)
sol = mid, right = mid-1;
else left = mid+1;
}
cout<<sol<<'\n';
return 0;
}