Cod sursa(job #2282118)
Utilizator | Data | 13 noiembrie 2018 11:15:24 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.63 kb |
#include<fstream>
#include<algorithm>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k,ans,lim,s[20005];
int ras(int x){
int nr=0;
for(int i=1;i<=n;){
int b=x;
while(i<=n && b>=s[i])
b-=s[i++];
++nr;
}
return nr;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>s[i];
if(lim<s[i]) lim=s[i];
ans+=s[i];
}
int step=1;
while(step<=ans) step<<=1;
while(step){
if(ans-step>=lim && ras(ans-step)<=k)
ans-=step;
step>>=1;
}
cout<<ans;
}