Pagini recente » Cod sursa (job #1764093) | Cod sursa (job #1337550) | Cod sursa (job #1609724) | Cod sursa (job #1768386) | Cod sursa (job #1274097)
#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];
}
while(c1<=c2)
{
mij=(c1+c2)/2;
nr=check(mij);
if(nr>k)
{
c1=mij+1;
}
else if(nr<k)
{
c2=mij-1;
if(minn>mij)minn=mij;
}
else{ minn=mij;c2=mij-1;}
}
fout<<minn;
return 0;
}