Pagini recente » Cod sursa (job #9235) | Cod sursa (job #261726) | Cod sursa (job #2155992)
#include <cstdio>
#include <iostream>
using namespace std;
int v[16001],k,n;
int verif (int x){
int s,tp,i;
// x e capacitatea aleasa acum
s=0;
tp=1;
for (i=1;i<=n;i++){
if (s+v[i]<=x) // pot sa o incarc
s+=v[i];
else {
// trb sa o includ in alt transp
s=v[i];
tp++;
}
}
return tp<=k;
}
int main()
{
FILE *fin=fopen ("transport.in","r");
FILE *fout=fopen ("transport.out","w");
int i,st,dr,mid;
fscanf (fin,"%d%d",&n,&k);
st=1;
dr=0;
for (i=1;i<=n;i++){
fscanf (fin,"%d",&v[i]);
st=max(st,v[i]);
dr+=v[i];
}
// printf ("%d %d",st,dr);
while (st<=dr){
mid=(st+dr)/2;
if (verif (mid))
dr=mid-1;
else st=mid+1;
}
fprintf (fout,"%d",st);
return 0;
}