Pagini recente » Cod sursa (job #377763) | Cod sursa (job #1825004) | Cod sursa (job #999955) | Cod sursa (job #1666419) | Cod sursa (job #3171476)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16005], n;
int fa(int x)
{
int i, suma= 0, cnt= 0;
for(i= 1;i <= n;i++)
{
if(suma+ v[i] > x)cnt++, suma= v[i];//, cout <<i<<" ";
else suma+= v[i];
}
cnt++;
//cout <<"x= "<<x<<" si cnt= "<<cnt<<endl<<endl;
return cnt;
}
int main()
{
int i, k, maxi= -1, suma= 0, st, dr, mij, rez= -1;
cin >> n>> k;
for(i= 1;i <= n;i++)cin >> v[i], suma+= v[i], maxi= max(maxi, v[i]);
st= maxi; dr= suma;
while(st <= dr)
{
mij= (st+ dr)/ 2; /// capacitatea camionului
int tran= fa(mij);
if(tran== k)rez= mij;
if(tran > k)st= mij+ 1;
else dr= mij- 1;
}
if(rez > 0)cout << rez;
else cout << st;
return 0;
}