Pagini recente » Cod sursa (job #2282016) | Cod sursa (job #1636602) | Clasament pregatire_oni_baraj_juniori | Cod sursa (job #1864288) | Cod sursa (job #2281524)
#include <fstream>
#define NM 16010
#define LIM 16000*16000+10
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k,v[NM],rez,mx,sum;
bool ok(int x);
int caut(int st,int dr);
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>v[i];
sum+=v[i];
}
rez=caut(1,sum);
cout<<rez<<'\n';
return 0;
}
bool ok(int x)
{
int sum=0,nr=1;
for(int i=1;i<=n;i++)
if(sum+v[i]<=x)
sum+=v[i];
else{
nr++;
sum=v[i];
}
if(nr<=k)
return 1;
return 0;
}
int caut(int st,int dr)
{
int mj=0,poz=0;
while(st<=dr)
{
mj=(st+dr)/2;
if(ok(mj))
dr=mj-1,poz=mj;
else st=mj+1;
}
return poz;
}