Pagini recente » Cod sursa (job #489615) | Cod sursa (job #112179) | Cod sursa (job #2437275) | Cod sursa (job #788095) | Cod sursa (job #3260218)
#include <iostream>
#include <fstream>
using namespace std;
int v[16000];
int f(int volum, int n)
{
int nr_transport=1, suma=0;
for(int i=0; i<n; i++)
{
if(suma+v[i]>volum)
{
nr_transport++;
suma=0;
}
suma+=v[i];
}
if(suma>volum)
nr_transport++;
return nr_transport;
}
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int n, k, st=0, dr=0;
cin >> n >> k;
for(int i=0; i<n; i++)
{
cin >> v[i];
if(v[i]>st) st=v[i];
dr+=v[i];
}
int mij;
while(st<dr)
{
mij=st+(dr-st)/2;
if(f(mij, n)<=k) dr=mij-1;
else st=mij+1;
//cout << st << " " << mij << " " << dr << " " << f(mij, n) << "\n";
}
cout << st;
return 0;
}