Pagini recente » Cod sursa (job #1509542) | Cod sursa (job #905811) | Cod sursa (job #45539) | Borderou de evaluare (job #1278412) | Cod sursa (job #640442)
Cod sursa(job #640442)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int N , K , v[1<<14] , cmin = int(2e9) , s;
bool doable(const int &cap)
{
int s = 0 , t = 0;
for(int i=1;i<=N;++i)
{
if(s+v[i]<cap)
s+=v[i];
else
if(s + v[i] == cap) s = 0 , t++;
else
s = v[i] , t++;
}
if(s) t++;
return t<=K;
}
int main()
{
fin>>N>>K;
for(int i=1;i<=N;++i)
fin>>v[i] , s+=v[i];
int m , l , r;
l = 1 , r = s;
while(l<=r)
{
m = l + (r-l)/2;
if(doable(m))
{
cmin = min(cmin,m);
r = m - 1;
}
else
l = m + 1;
}
fout<<cmin<<'\n';
return 0;
}