Cod sursa(job #3166163)
Utilizator | Data | 7 noiembrie 2023 19:51:54 | |
---|---|---|---|
Problema | Transport | Scor | 80 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.68 kb |
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, v[16005], mid;
int t(int x){
int s = v[1];
int nr = 1;
for (int i = 2; i <= n; i++){
if ( s + v[i] <= x )
s += v[i];
else{
nr++;
s = v[i];
}
}
return nr;
}
int main(){
fin >> n >> k;
for (int i = 1; i <= n; i++)
fin >> v[i];
int st = 1;
int dr = 2e9;
while ( st <= dr ){
mid = (st + dr)/2;
if ( t(mid) > k )
st = mid + 1;
else
dr = mid - 1;
}
fout << st;
return 0;
}