Pagini recente » Cod sursa (job #92705) | Clasamentul arhivei educationale | Cod sursa (job #623605) | Cod sursa (job #2518186) | Cod sursa (job #1671080)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,v[16005],i;
int transport(int m)
{
int i,t,nr;
i=1;
t=m;
nr=k;
while(i<=n && nr>0)
{
if(v[i]<=t)
{
t=t-v[i];
i=i+1;
}
else
{
nr=nr-1;
t=m;
}
}
if(i>n)
return 1;
else
return 0;
}
int cautareBinara(int s, int d)
{
int m;
while(s<=d)
{
m=s+(d-s)/2;
if(transport(m)==1)
{
if(m==s)
return m;
else
{
if(transport(m-1)==0)
return m;
else
d=m-1;
}
}
else
s=m+1;
}
}
int main()
{
long long sum;
int ma,r;
in>>n>>k;
sum=0;
ma=0;
for(i=1; i<=n; i++)
{
in>>v[i];
sum+=v[i];
if(v[i]>ma)
ma=v[i];
}
r=cautareBinara(ma,sum);
out<<r;
return 0;
}