Pagini recente » Cod sursa (job #706102) | Cod sursa (job #789584) | Cod sursa (job #927208) | Cod sursa (job #1785522) | Cod sursa (job #1378515)
#include <iostream>
#include <stdio.h>
using namespace std;
int v[16001];
int main()
{
FILE* fin=fopen("transport.in", "r");
FILE* fout=fopen("transport.out", "w");
int n, k, s=0, s2, nr=100000, c=0, ld, ls, sol, csol;
fscanf(fin, "%d%d", &n, &k);
for(int i=1; i<=n; i++){
fscanf(fin, "%d", &v[i]);
s=s+v[i];
if(v[i]>c)
c=v[i];
}
sol=ls=c;
ld=s;
while(ls<=ld){
nr=0;
s2=0;
sol=(ls+ld)/2;
for(int i=1; i<=n; i++){
s2=s2+v[i];
if(s2>sol){
nr++;
s2=v[i];
}
}
nr++;
if(nr<=k){
ld=sol-1;
csol=sol;
}
else{
ls=sol+1;
csol=sol+1;
}
}
fprintf(fout, "%d", csol);
return 0;
}