Pagini recente » Cod sursa (job #2603064) | Cod sursa (job #552460) | Cod sursa (job #2923775) | Cod sursa (job #42171) | Cod sursa (job #2615165)
#include <bits/stdc++.h>
using namespace std;
ifstream ci("transport.in");
ofstream cou("transport.out");
int st=1,dr=16000*16000,sol=1;
int v[17000];
int n,k,mx;
void citire()
{
ci>>n>>k;
for(int i=1; i<=n; i++)
{
mx=max(mx,v[i]);
ci>>v[i];
}
}
int Ok(int mr)
{
int s=0,cn=1,i;
for(i=1; i<=n; i++)
{
if(s+v[i]>mr)
{
cn++;
s=v[i];
}else{
s+=v[i];
}
//cout<<k<<" "<<cn<<" "<<s<<"\n";
}
return cn;
}
void rez()
{
int mij,sol1=mx,sol=mx;
st=mx;
while(st<=dr)
{
mij=(st+dr)/2;
if(Ok(mij)<=k){
dr=mij-1;
sol1=mij;
}else{
st=mij+1;
sol=mij;
}
}
if(Ok(sol)>k){
cou<<sol1;
}else{
cou<<sol;
}
}
int main()
{
citire();
rez();
return 0;
}