Pagini recente » Cod sursa (job #3237382) | Cod sursa (job #3228086) | Cod sursa (job #3241867) | Cod sursa (job #2831073) | Cod sursa (job #2629485)
#include <fstream>
using namespace std;
ifstream f("transport.in"); ofstream g("transport.out");
int n,k,low,up,x[16001];
int main()
{ f>>n>>k;
for(int i=1;i<=n;++i)
{ f>>x[i];
up+= x[i];
if(x[i]>low) low=x[i];
}
int st=low,dr=up,res;
while(st<=dr)
{ int med=(st+dr)/2,camioane=1,sum=0;
for(int i=1;i<=n;++i)
if(sum+x[i]<=med) sum+=x[i]; else {++camioane; sum=x[i];}
if(camioane<=k) {res=med; dr=med-1;} else st=med+1;
}
g<<res; g.close(); f.close(); return 0;
}