Pagini recente » Cod sursa (job #1291557) | Cod sursa (job #2482864) | Cod sursa (job #2155257) | Cod sursa (job #2432648) | Cod sursa (job #1026746)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k;
int *v = new int[16001];
int last;
bool transports(int quant)
{
int i,ctr=0,temp=0;
for(i=0;i<n;i++)
{
if(temp+v[i]<=quant)
temp+=v[i];
else
{
temp = 0;
ctr++;
i--;
}
if(i==n-1) ctr++;
if(ctr>k) return false;
}
return true;
}
int find_min(int low,int high)
{
int piv = (low+high)/2;
if(high==low) return last;
if(transports(piv))
{
last = piv;
return find_min(low,piv);
}
else
return find_min(piv+1,high);
}
int main()
{
int i,max=0,s=0;
fin>>n>>k;
for(i=0;i<n;i++)
{
fin>>v[i];
s+=v[i];
if(v[i]>max) max=v[i];
}
fout<<find_min(max,s);
return 0;
}