Pagini recente » Cod sursa (job #2364126) | Cod sursa (job #2667207) | Cod sursa (job #1725299) | Cod sursa (job #2570873) | Cod sursa (job #2670919)
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int v[16001],n,k,i,tr,maxi;
long sum,s,mini,r,mid,l;
int main()
{
fin>>n>>k;
for (i=1;i<=n;i++)
{
fin>>v[i];
sum=sum+v[i];
if (v[i]>maxi)
maxi=v[i];
}
if (k==1)
fout<<sum;
else if (n<=k)
fout<<maxi;
else
{
l=maxi;
r=sum;
mini=sum;
while (l!=r)
{
tr=0;
mid=(l+r)/2;
i=1;
while (i<=n)
{
s=0;
while (s+v[i]<=mid && i<=n)
{
s=s+v[i];
i++;
}
tr++;
}
if (tr<k) r=mid;
else if (tr>k) l=mid+1;
else
{
r=mid;
if (mid<mini)
mini=mid;
}
}
fout<< mini;
}
return 0;
}