Pagini recente » Cod sursa (job #2130380) | Cod sursa (job #890111) | Cod sursa (job #2438507) | Cod sursa (job #2666182) | Cod sursa (job #2192417)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k;
int max_nr;
int total_s;
vector<int> v;
int transports(int c)
{
int act_c = c;
int t = 1;
for(int i=0;i<n;i++)
{
if(act_c - v[i] < 0)
{
t++;
act_c = c;
}
if(act_c - v[i] >= 0) act_c -= v[i];
}
return t;
}
int bin_s(int l,int r,int k)
{
int min_cap = 16001;
while(l <= r)
{
int mid = l+(r-l)/2;
int tr = transports(mid);
if(tr <= k) min_cap = min(min_cap,mid);
if(k < tr) l = mid + 1;
else r = mid - 1;
}
return min_cap;
}
int main()
{
max_nr = -1;
total_s = 0;
fin>>n>>k;
int nr;
for(int i=0;i<n;i++)
{
fin>>nr;
total_s += nr;
max_nr = max(nr,max_nr);
v.push_back(nr);
}
fout<<bin_s(max_nr,total_s,k);
}