Cod sursa(job #2955663)
Utilizator | Data | 17 decembrie 2022 16:21:27 | |
---|---|---|---|
Problema | Transport | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.6 kb |
#include <fstream>
using namespace std;
ifstream cin ("transport.in");
ofstream cout ("transport.out");
int v[16001], n, k, dr=16000, st=0, max1=0, mij, i;
int check(int d){
int cnt=0, cd;
cd=d;
for(i=1; i<=n; i++){
if(d-v[i]<0){
cnt++;
d=cd-v[i];
}
else d=d-v[i];
}
return cnt;
}
int main(){
cin >> n >> k;
for(i=1; i<=n; i++){
cin >> v[i];
if(v[i]>max1) max1=v[i];
}
st=max1;
while(dr-st>1){
mij=(st+dr)/2;
if(check(mij)>k) st=mij;
else dr=mij;
}
cout << dr;
return 0;
}