Pagini recente » Cod sursa (job #2458854) | Cod sursa (job #1423316) | Cod sursa (job #430099) | Cod sursa (job #1403892) | Cod sursa (job #3256033)
#include <iostream>
#include <fstream>
using namespace std;
short int v[16000];
int main(){
ifstream fin("transport.in");
ofstream fout("transport.out");
int i, n, k, maxv=0, sum=0, s, d, vol, vol_candidat, nr_transporturi;
fin >> n >> k;
for(i=0;i<n;i++){
fin >> v[i];
sum += v[i];
if(v[i] > maxv)
maxv = v[i];
}
s = maxv;
d = sum;
while(s<=d){
vol_candidat = (s+d)/2;
sum = 0;
nr_transporturi = 1;
for(i=0; i<n; i++){
sum += v[i];
if(sum > vol_candidat){
sum=v[i];
nr_transporturi++;
}
}
if(nr_transporturi > k)
s = vol_candidat+1;
else{
vol = vol_candidat;
d = vol_candidat-1;
}
}
fout << vol << endl;
}