Pagini recente » Cod sursa (job #1636739) | Cod sursa (job #1773231) | Cod sursa (job #2138545) | Cod sursa (job #370898) | Cod sursa (job #3260166)
#include <iostream>
#include <fstream>
using namespace std;
int v[16000];
int f(int volum, int n)
{
int nr_transport=1, suma=0;
for(int i=0; i<n; i++)
{
if(suma+v[i]>volum)
{
nr_transport++;
suma=0;
}
suma+=v[i];
}
if(suma>volum)
nr_transport++;
return nr_transport;
}
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int n, k, st=0, dr=0;
cin >> n >> k;
for(int i=0; i<n; i++)
{
cin >> v[i];
if(v[i]>st) st=v[i];
dr+=v[i];
}
//cout << st << " " << dr << "\n";
int mij;
while(st<=dr)
{
mij=st+(dr-st)/2;
if(f(mij, n)<k) {dr=mij;}
else if(f(mij, n)>=k+1) {st=mij+1;}
else break;
//cout << mij << " " << f(mij, n) << "\n";
}
cout << mij;
return 0;
}