Pagini recente » Cod sursa (job #661561) | Cod sursa (job #3176621) | Cod sursa (job #418351) | Cod sursa (job #2858886) | Cod sursa (job #614351)
Cod sursa(job #614351)
#include<fstream>
using namespace std;
int a[16001],n,k;
bool ok(int val){
int v=0,k1=1,i;
for (i=1;i<=n;++i){
if (a[i]+v<=val)v+=a[i];
else { v=a[i]; ++k1; }
if (k1>k)return false;
}
return true;
}
int main(void){
ifstream fin("transport.in");
ofstream fout("transport.out");
int max=0,suma=0,mijloc,i;
fin>>n>>k;
for(i=1;i<=n;++i){
fin>>a[i];
if (a[i]>max) max=a[i];
suma+=a[i];
}
while (max!=suma){
mijloc=(max+suma)/2;
if (ok(mijloc)) suma=mijloc;
else max=mijloc+1;
}
fout<<max; fout.close();
return 0;
}