Pagini recente » Cod sursa (job #3230651) | Cod sursa (job #1953807) | Cod sursa (job #3234690) | Cod sursa (job #2573817) | Cod sursa (job #2639075)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16001];
bool verif(int x,int n,int k) {
int sk=0,c=1;
for(int i=1; i<=n; i++) {
if(v[i]+sk<=x)
sk+=v[i];
else {
sk=v[i];
c++;
}
}
return (c>k);
}
int main() {
int n,k,minn,maxx,x,s=0,mid,sk=0,last,ans=0;
int p_max=28;
cin>>n>>k;
if(n==1) {
cin>>x;
cout<<x;
} else {
for(int i=1; i<=n; i++) {
cin>>x;
v[i]=x;
s+=x;
ans=max(ans,x)-1;
}
maxx=s;
minn=s/k;
for(int i = (1 << p_max); i > 0; i /= 2) {
if(verif(ans + i,n,k))
ans += i;
}
cout<<ans+1;
}
return 0;
}