Pagini recente » Monitorul de evaluare | Cod sursa (job #2521515) | Cod sursa (job #3200879) | Cod sursa (job #2079795) | Cod sursa (job #1229585)
#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;
for(int i = 1 ; i <= n ; i++)
in>>v[i];
bin_search(1,500000000,k);
out<<sol;
in.close();
out.close();
return 0;
}