Pagini recente » Cod sursa (job #1876591) | Cod sursa (job #2615480) | Cod sursa (job #2149164) | Cod sursa (job #1888255) | Cod sursa (job #1447464)
#include <fstream>
using namespace std;
ifstream f ("transport.in");
ofstream g ("transport.out");
int n , k , sum , a[17000] , maxi;
void caut_bin();
int verif(int x);
int main()
{
int i ;
f >> n >> k;
for(i = 1 ; i <= n ; ++i){
f >> a[i];
sum += a[i];
maxi = max (maxi , a[i]);
}
caut_bin();
return 0;
}
void caut_bin(){
int i = 0 , p = 0 ;
for(i = 1 ; i <= sum ; i*=2);
while(i){
if(verif(p + i) > k){
p += i ;
}
i /= 2;
}
if(p < maxi) p = maxi;
while(verif(p) > k){
++p;
}
g << p;
}
int verif(int x){
int i , s = 0 , nr = 1;
for(i = 1 ; i <= n ; ++i){
if(s + a[i] <= x){
s += a[i] ;
}
else{
s = a[i];
++nr;
}
}
return nr;
}