Pagini recente » Cod sursa (job #1503160) | Cod sursa (job #1243243) | Cod sursa (job #1589994) | Cod sursa (job #2203536) | Cod sursa (job #1961722)
#include <stdio.h>
using namespace std;
int v[16005];
const int P=16000*16000;
int cautBin(int k, int n){
int pas, sol=0;
pas=P;
int s=0;
int d=0;
bool ok;
for(pas=1; pas<=P; pas<<=1);
while(pas>0){
ok=true;
d=1;
s=0;
for(int i=0; i<n; i++){
if(v[i]>sol+pas){
ok=false;
}
if(s+v[i]>pas+sol){
s=v[i];
d++;
}
if(s+v[i]<=pas+sol){
s+=v[i];
}
}
if(ok==false || d>k){
sol+=pas;
}
pas>>=1;
}
return sol+1;
}
int main()
{
FILE *in, *out;
in = fopen("transport.in", "r");
out = fopen("transport.out", "w");
int n, k;
fscanf(in, "%d%d", &n, &k);
for(int i=1; i<=n; i++){
fscanf(in, "%d", &v[i]);
}
fprintf(out, "%d", cautBin(k, n));
return 0;
}