Pagini recente » Cod sursa (job #2257545) | Istoria paginii runda/porc_again/clasament | Cod sursa (job #1706726) | Cod sursa (job #2220989) | Cod sursa (job #2670912)
#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 nrtr(long mid)
{
tr=0;
i=1;
while (i<=n)
{
s=0;
while (s+v[i]<=mid && i<=n)
{
s=s+v[i];
i++;
}
tr++;
}
return tr;
}
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)
{
mid=(l+r)/2;
tr=nrtr(mid);
if (tr<k) r=mid;
else if (tr>k) l=mid+1;
else
{
r=mid;
if (mid<mini)
mini=mid;
}
}
fout<< mini;
}
return 0;
}