Pagini recente » Cod sursa (job #574006) | Cod sursa (job #2576587) | Cod sursa (job #446091) | Cod sursa (job #2491845) | Cod sursa (job #611057)
Cod sursa(job #611057)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,i,a[16001],maxi,sum,sol;
bool verif(int v) {
int j=1,t=0,s;
if (v<maxi) return false;
while (j<=n) {
s=0;
while (j<=n && s+a[j]<=v) {
s+=a[j];j++;
}
t++;
}
if (t<=k) return true;
return false;
}
int caut_bin(int st,int dr) {
int m=(st+dr)/2;
while (st<=dr) {
if (verif(m-1)==true) dr=m-1;
else if (verif(m)==true) return m;
else st=m+1;
m=(st+dr)/2;
}
}
int main() {
f >> n >> k;
for (i=1;i<=n;i++) {
f >> a[i];
maxi=max(maxi,a[i]);
sum+=a[i];
}
sol=caut_bin(maxi,sum);
g << sol << '\n';
f.close();g.close();
return 0;
}