Pagini recente » Cod sursa (job #2557044) | Cod sursa (job #1360437) | Cod sursa (job #2327019) | Cod sursa (job #1623685) | Cod sursa (job #1229602)
#include<fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,v[20000],sol;
int nr_transport(int capacitate)
{
int suma = 0,i = 1,sol = 0;
while(i <= n )
{
if(suma + v[i] > capacitate)
{
sol++;
suma = v[i];
}
else{
suma+=v[i];
}
i++;
}
sol++;
return sol;
}
void bin_search(int left,int right,int val)
{
int mid,now;
while(left <= right)
{
mid = (left+right)/2;
now = nr_transport(mid);
if(now <= val){
right = mid -1;
sol = mid;
}
else
left = mid +1 ;
}
}
int main()
{
in>>n>>k;
int s = 0;
for(int i = 1 ; i <= n ; i++){
in>>v[i];
s+= v[i];
}
if(k == 1 )
{
out<<s;
return 0;
}
if(n == 1){
out<<v[1];
return 0;
}
bin_search(1,s,k);
out<<sol;
in.close();
out.close();
return 0;
}