Pagini recente » Borderou de evaluare (job #826774) | Borderou de evaluare (job #515124) | Borderou de evaluare (job #2573890) | Borderou de evaluare (job #1902134) | Cod sursa (job #640452)
Cod sursa(job #640452)
#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)
t++ , s = v[i];
else
s+=v[i];
if(v[i]>cap) return 0;
}
if(s<=cap) t++; else t = K + 1;
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;
}