Pagini recente » Cod sursa (job #716290) | Cod sursa (job #1690565) | Cod sursa (job #3002143) | Cod sursa (job #2520452) | Cod sursa (job #1712905)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,maxim;
int v[16005];
int max(int a,int b)
{
return a>b?a:b;
}
int min(int a,int b)
{
return a>b?b:a;
}
bool gasit(int maxim)
{
int s=0,nr=0;
for (int i=0;i<n;i++) {
if (s+v[i]<=maxim) s+=v[i];
else {
s=v[i];
nr++;
}
}
if (nr<k) return true;
return false;
}
int main()
{
int s=0;
fin>>n>>k>>maxim;v[0]=maxim;
for (int i=1;i<n;i++) {
fin>>v[i];
if (v[i]>maxim) maxim=v[i];
s+=v[i];
}
int mij;
int st=maxim;
int dr=s;
while (st<=dr) {
mij=(st+dr)/2;
if (gasit(mij)) {
maxim=mij;
dr=mij-1;
}
else st=mij+1;
}
fout<<maxim;
}