Pagini recente » Cod sursa (job #625352) | Cod sursa (job #1096267) | Cod sursa (job #2162017) | Cod sursa (job #530354) | Cod sursa (job #2788723)
#include <fstream>
using namespace std;
int v[16001];
int main()
{
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,i,st,dr,mijloc,transporturi,suma,solutie;
in>>n>>k;
st=dr=0;
for(i=1;i<=n;i++)
{
in>>v[i];
if(v[i]>st)st=v[i];
dr=dr+v[i];
}
while(st<=dr)
{
mijloc=(st+dr)/2;
transporturi=0;
suma=0;
for(i=1;transporturi<=k&&i<=n;i++)
{
if(v[i]+suma>mijloc)
{
transporturi++;
suma=0;
}
suma=suma+v[i];
}
if(transporturi+1>k)st=mijloc+1;
else{
solutie=mijloc;
dr=mijloc-1;
}
}
out<<solutie;
return 0;
}