Pagini recente » Cod sursa (job #2564522) | Cod sursa (job #541023) | Cod sursa (job #2916956) | Cod sursa (job #1969053) | Cod sursa (job #3206758)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
long long v[16005], n;
int e_bine(int x)
{
long long cnt= 0, suma= 0;
for(long long i= 1;i <= n;i++)
{
if(suma+ v[i] > x)suma= v[i], cnt++;
else suma+= v[i];
}
if(suma < x)cnt++;
return cnt;
}
int main()
{
long long i, k, mij, st, dr, rez= -1, suma= 0, ok;
cin >> n>> k;
for(i= 1;i <= n;i++)cin >> v[i], suma+= v[i];
st= 1; dr= suma;
while(st <= dr)
{
mij= (st+ dr)/ 2;
ok= e_bine(mij);
//cout <<"mij= "<<mij<<" si ok= "<<ok<<endl;
if(ok <= k)rez= mij, dr= mij- 1;
else st= mij+ 1;
}
if(rez== -1)cout <<st;
else cout << rez;
return 0;
}