Pagini recente » Cod sursa (job #639345) | Cod sursa (job #389568) | Cod sursa (job #118742) | Cod sursa (job #355537) | Cod sursa (job #1274093)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int i,n,a[16002],k,c1,c2,mij,nr,minn;
int check(int cop)
{
int s=0,nrt=0;
for(i=1;i<=n;i++)
{
if(s+a[i]>cop)
{
nrt++;
s=a[i];
}
else
s+=a[i];
}
if(s)nrt++;
return nrt;
}
int main()
{
fin>>n>>k;
for(i=1;i<=n;i++)
{
fin>>a[i];
if(a[i]>c1)c1=a[i];
c2+=a[i];
}
minn=c2;
while(c1<=c2)
{
mij=(c1+c2)/2;
nr=check(mij);
if(nr>k)
{
c1=mij+1;
}
else if(nr<k)c2=mij-1;
else{if(minn>mij)minn=mij;c2=mij-1;}
}
fout<<minn;
return 0;
}