Cod sursa(job #3369273)
| Utilizator | Data | 19 octombrie 2026 08:16:37 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.77 kb |
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16005];
int main()
{
int n,k;
cin>>n>>k;
int sum=0,maxx=0,rasp=0;
for(int i=1;i<=n;i++){
cin>>v[i];
maxx=max(maxx,v[i]);
sum=sum+v[i];
}
int st=maxx,dr=sum;
while(st<=dr){
int mid=(st+dr)/2;
int cnt=1,s=0;
for(int i=1;i<=n;i++){
if(v[i]+s<=mid){
s+=v[i];
}
else{
s=v[i];
cnt++;
}
}
if(cnt<=k){
dr=mid-1;
rasp=mid;
}
else{
st=mid+1;
}
}
cout<<rasp;
}
