Cod sursa(job #3364607)
| Utilizator | Data | 7 septembrie 2026 18:57:47 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.7 kb |
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16005];
int n,k;
bool vf(int lim){
int s=0,cnt=1;
for(int i=1;i<=n;i++){
if(v[i]>lim)
return false;
if(s+v[i]>lim){
s=v[i];
cnt++;
}
else
s+=v[i];
}
return cnt<=k;
}
int main(){
int st=1,dr=256000000,rez,mid;
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>v[i];
rez=dr;
while(st<=dr){
mid=(st+dr)/2;
if(vf(mid)){
rez=mid;
dr=mid-1;
}
else
st=mid+1;
}
cout<<rez;
return 0;
}