Pagini recente » Cod sursa (job #464718) | Cod sursa (job #2077488) | Rating Marius Petcu (Petcu_Marius_322CC) | Cod sursa (job #3215052) | Cod sursa (job #1309009)
#include <iostream>
#include <fstream>
using namespace std;
const int NMax = 16000;
int S[NMax];
int n,k;
int VolMinim;
bool CanDo(int m)
{
int q=1,i,sum=0;
for(i=1;i<=n;i++)
{
if(S[i] > m) return 0;
sum = sum + S[i];
if(sum > m)
{
q++; sum = S[i];
}
}
if(q <= k ) return 1;
return 0;
}
void CautBin()
{
int lo = 0, hi = 18000;
int m;
while(hi - lo > 1)
{
m = (lo + hi)/2;
if(CanDo(m))
{
cout<<m<<endl;
hi = m;
if(VolMinim > m) VolMinim = m;
}
else
{
lo = m;
}
}
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>S[i];
VolMinim = 18000;
CautBin();
cout<<VolMinim;
}