Pagini recente » Cod sursa (job #1541820) | Cod sursa (job #1671765)
#include<iostream>
#include<stdio.h>
int v[16001];
using namespace std;
int main(){
FILE *fin,*fout;
fin=fopen("transport.in","r");
fout=fopen("transport.out","w");
int n,k,i,l1,l2,max,s,tr,suma,m,min;
fscanf(fin,"%d%d",&n,&k);
s=max=0;
for(i=1;i<=n;i++){
fscanf(fin,"%d",&v[i]);
if(v[i]>max)
max=v[i];
s+=v[i];
}
l1=max;
l2=s;
min=256000001;
while(l1<=l2){
m=(l1+l2)/2;
i=1;
tr=0;
while(i<=n){
suma=0;
while(i<=n&&suma+v[i]<=m){
suma+=v[i];
i++;
}
tr++;
}
if(tr==k)
if(m<min)
min=m;
if(tr>k)
l1=m+1;
else
l2=m-1;
}
fprintf(fout,"%d",min);
fclose(fin);
fclose(fout);
return 0;
}