Pagini recente » Cod sursa (job #1336365) | Cod sursa (job #1636622) | Cod sursa (job #2742946) | Cod sursa (job #2679042) | Cod sursa (job #2792847)
#include <fstream>
#include <climits>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
const int DIM=16002;
int n,k;
int v[DIM]={0};
int nrTransport(int capacitate){
int s=v[0],nr=0;
for(int i=1;i<n;i++){
if(s+v[i]<=capacitate){
s+=v[i];
}
else{
s=v[i];
nr++;
}
}
return nr;
}
int main()
{
int maxSaltea=INT_MIN;
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>v[i];
maxSaltea=max(maxSaltea,v[i]);
}
int left=maxSaltea,right=256000,mid=0,a=0;
int sol=0;
///solutie incorecta
/*while(left<=right){
mid=(right+left)/2;
a=nrTransport(mid);
if(a>k){
right=mid-1; de ce?
}
else if(a<k){
left=mid+1;
}
else if(a==k){
sol=mid;
right=mid-1;
}
}*/
///solutie corecta
while(left<=right){
mid=(left+right)/2;
if(nrTransport(mid)>k-1){
left=mid+1;
}
else{
sol=mid;
right=mid-1;
}
}
cout<<sol;
return 0;
}