Pagini recente » Cod sursa (job #2466166) | Borderou de evaluare (job #1347278) | Monitorul de evaluare | Cod sursa (job #782969) | Cod sursa (job #3340528)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k;
vector<int> v;
bool check(int x){
int sum=0;
int transport=1;
for(int i=0;i<n;i++){
if(v[i]>x) return false;
if(sum+v[i]>x){
transport++;
sum=v[i];
}
else sum+=v[i];
}
return sum<=k;
}
int main(){
fin>>n>>k;
v.resize(n);
int st=,dr=0;
for(int i=0;i<n;i++){
fin>>v[i];
st=max(st,v[i]);
dr+=v[i];
}
int sol=dr;
while(st<=dr){
if(check((st+dr)/2)){
sol=(st+dr)/2;
dr=(st+dr)/2-1;
}
else st=(st+dr)/2+1;
}
fout<<sol<<"/n";
return 0;
}