Pagini recente » Cod sursa (job #1884536) | Cod sursa (job #256938) | Cod sursa (job #3218569) | Cod sursa (job #1448930) | Cod sursa (job #660575)
Cod sursa(job #660575)
#include <fstream>
#define DIM 16001
ifstream f("transport.in");
ofstream g("transport.out");
long long m,n,k,a,b,r;
long long v[DIM];
int test(int s)
{
int c=0,m=1;
if (s<b) return 0;
for(int i=1; i<=n; i++)
if (c+v[i]<=s) c+=v[i];
else {c=v[i];m++;}
if (m<=k) return 1;
return 0;
}
void caut()
{
int st=1,dr=a;
while (st<=dr) {
m=(st+dr)/2;
if (test(m)==1) {dr=m-1;r=m;}
else st=m+1;
}
}
int main()
{
f>>n>>k;
for(int i=1; i<=n; i++) {f>>v[i];a+=v[i];b=max(b,v[i]);}
caut();
g<<r;
f.close();
g.close();
return 0;
}