Pagini recente » Cod sursa (job #3161607) | Cod sursa (job #507796) | Cod sursa (job #410706) | Cod sursa (job #1026399) | Cod sursa (job #1198252)
#include <stdio.h>
#include <iostream>
using namespace std;
int n,i,X[16002],v,k,maxv,sv,rez;
int bs(int st, int dr)
{
int m,i,nrd,svcrt;
if (st==dr)
return st;
m=(st+dr)/2;
// cu un camion de capacvitate m
// se pot transporta saltelele in cel mult k drumuri?
nrd=0;
svcrt=0;
for(i=1;i<=n+1;)
if(X[i]+svcrt<=m)
{
svcrt+=X[i];
i++;
}
else
{
nrd++;
svcrt=0;
if (i==n+1)
break;
}
if (nrd<=k)
return bs(st,m);
else
return bs(m+1,dr);
}
FILE *fi,*fo;
int main()
{
fi = fopen("transport.in","r");
fo = fopen("transport.out","w");
fscanf(fi,"%d%d",&n,&k);
maxv=0,sv=0;
for(i=1;i<=n;i++)
{
fscanf(fi,"%d",&X[i]);
if(X[i]>maxv)
maxv=X[i];
sv+=X[i];
}
X[n+1]=1000000000;
rez=bs(maxv,sv);
fprintf(fo,"%d",rez);
fclose(fi);
fclose(fo);
return 0;
}