Pagini recente » Borderou de evaluare (job #352011) | Clasamentul arhivei educationale | Cod sursa (job #2921991) | Borderou de evaluare (job #1912912) | Cod sursa (job #1967251)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n, v[16006], k;
int bini(int dr, int st,int v[], int x)
{
int i, t, m ;
m = (st + dr) / 2;
while(st <= dr)
{ m = (st + dr) / 2;
t = 1; int s = 0;
for(i = 1; i <= n;i ++)
if(s + v[i] <= m)
s = s + v[i];
else
{
t++;
s = v[i];
}
if( t > x)
st = m + 1;
else
{
dr = m - 1;
}
}
return m;
}
int main()
{
int i, mini = 0, sum = 0, cm;
cin >> n >> k;
for(i = 1; i <= n; i++)
{
cin >> v[i];
if(v[i] > mini)
mini = v[i];
sum = sum + v[i];
}
cout << bini(sum, mini, v, k);
return 0;
}