Pagini recente » Cod sursa (job #2582526) | Cod sursa (job #2696337) | Cod sursa (job #507010) | Cod sursa (job #1103173) | Cod sursa (job #1720877)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int result,n;
int check(int volum,int v[16001])
{
int i,sum=0,nrtrans=1;
for(i=0; i<n; i++)
{
if(sum+v[i]>volum)
{
sum=v[i];
nrtrans++;
}
else
{
sum=sum+v[i];
}
}
return nrtrans;
}
int BinarySearch(int low,int high,int k,int v[16001])
{
int mid,flag=0,nrtrans;
for(; low<=high && flag==0;)
{
mid=(low+high)/2;
nrtrans=check(mid,v);
if(nrtrans==k)
{
result=mid;
high=mid-1;
}
else if(k<nrtrans)
{
low=mid+1;
}
else
{
high=mid-1;
}
}
return result;
}
int main()
{
int k,i,v[16001],low=0,high=0;
in>>n>>k;
for(i=0; i<n; i++)
{
in>>v[i];
if(v[i]>low)
low=v[i];
high=high+v[i];
}
out<<BinarySearch(low,high,k,v);
}