Pagini recente » Cod sursa (job #2864348) | Cod sursa (job #2974730) | Cod sursa (job #285735) | Cod sursa (job #1153918) | Cod sursa (job #1021357)
#include <fstream>
#include <cmath>
using namespace std;
int n,k,s[16000],S,mx,mn;
double med;
ifstream fin("transport.in");
ofstream fout("transport.out");
int nrt(int c)
{
int i,nt=1,crt=0;
for(i=0;i<n;i++)
if(crt+s[i]<=c)
crt+=s[i];
else
{
nt++;
crt=s[i];
}
return nt;
}
int cbin(int l,int r)
{
int m,sol;
while(l<=r)
{
m=(l+r)/2;
if(nrt(m)<=k)
{
sol=m;
r=m-1;
}
else
l=m+1;
}
return sol;
}
int main()
{
int i;
fin>>n>>k;
for(i=0;i<n;i++)
{
fin>>s[i];
S+=s[i];
mx=max(mx,s[i]);
}
med=(double)S/k;
mn=ceil(med);
mn=max(mn,mx);
fout<<cbin(mn,S)<<"\n";
return 0;
}