Pagini recente » Cod sursa (job #1117863) | Cod sursa (job #2352320) | Cod sursa (job #2699685) | Cod sursa (job #2314409) | Cod sursa (job #1479506)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream out("transport.out");
int main()
{
int n,k,a[16001],maxim,transport,i,mij,st,dr,suma,s=0;
fin>>n>>k;
fin>>a[0];
maxim=a[0];
for(i=1; i<n; i++)
{
fin>>a[i];
maxim=max(maxim,a[i]);
s+=a[i];
}
st=maxim-1;
dr=s+1;
while(st+1<dr)
{
mij=(st+dr)/2;
transport=1;
suma=0;
for(i=0; i<n; i++)
{
if(suma+a[i]<=mij)
suma+=a[i];
else
{
suma=a[i];
transport++;
}
}
if(transport<=k)
dr=mij;
else
st=mij;
}
out<<dr;
fin.close();
out.close();
return 0;
}