Pagini recente » Cod sursa (job #36864) | Cod sursa (job #1692892) | Cod sursa (job #1696348) | Cod sursa (job #1749387) | Cod sursa (job #634414)
Cod sursa(job #634414)
#include <fstream>
#include <iomanip>
#include <iostream>
#include <math.h>
using namespace std;
fstream fin("transport.in",ios::in);
fstream fout("transport.out",ios::out);
int main()
{
int n,k,i,j,v[16010],maxim,kaux,sum,ok=0,smax=0,l;
fin>>n>>k;
for (i=1;i<=n;i++) {
fin>>v[i];
if (maxim<v[i]) maxim = v[i];
smax+=v[i];
}
while (!ok){
kaux = 0; sum = 0; ok=1; l=(maxim+smax)/2;
for (j=1;j<=n;j++){
if (sum+v[j]>l){
sum=v[j]; kaux++;
if (kaux>k){
ok=0; break;
}
}else sum+=v[j];
}
// Cautare binara
if ((ok)&&(maxim+1==smax)) fout<<l;
else if (ok){
smax=l; ok=0;
}else{
maxim=l+1;
}
}
fin.close(); fout.close();
return 0;
}