Pagini recente » Cod sursa (job #1034132) | Cod sursa (job #1158060) | Cod sursa (job #227977) | Cod sursa (job #3153469) | Cod sursa (job #3030840)
#include <fstream>
#pragma GCC optimize("O1")
#pragma GCC optimize("O2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16005];
int n,k,st,dr;
int f(int b)
{
int poz=1,s=0;
for(int j=0; j<n; j++)
{
if(s+v[j]<=b)
s+=v[j];
else
{
s=v[j];
poz++;
}
}
if(poz<=k)
return 1;
else
return 0;
}
int main()
{
cin>>n>>k;
for(int i=0; i<n; i++)
cin>>v[i];
st=1,dr=16000;
int ok=0;
while(st<=dr)
{
/// cout<<st<<" "<<dr<<'\n';
if(f(dr)==1 && f(dr-1)==0)
{
ok=1;
cout<<dr;
break;
}
else if(f(dr)==1 && f(dr-1)==1 && f((dr+st)/2)==0)
st=(st+dr)/2;
else if(f(dr)==1 && f(dr-1)==1 && f((dr+st)/2)==1)
dr=(st+dr)/2;
}
if(ok==0)
cout<<dr;
return 0;
}