fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define fi first
  4. #define se second
  5. #define ll long long
  6. #define pll pair<ll,ll>
  7. #define pb push_back
  8. #define emb emplace_back
  9. #define lg(x) __lg(x)
  10. #define all(s) s.begin(),s.end()
  11. #define name "bai1"
  12. #define Mask(i) (1LL<<i)
  13. #define testbit(mask, i) ((mask >> i) & 1LL)
  14. #define onBit(mask, i) (mask | (1LL << i))
  15. #define offBit(mask, i) (mask & ~(1LL << i))
  16. #define flipBit(mask, i) (mask ^ (1LL << i))
  17. #define showbit(mask, x) bitset<x>(mask)
  18. const ll mod = 1e9 + 7;
  19.  
  20. void add(ll &a, ll b){
  21. if((a += b) >= mod) a -= mod;
  22. }
  23.  
  24.  
  25. const ll inf = 1e9;
  26. const ll lim = 1e7 + 5;
  27. const ll N = 1e5 + 5;
  28.  
  29.  
  30. ll n, k;
  31. ll a[N];
  32.  
  33. bool check(ll x){
  34. int drone = 1;
  35. ll sum = 0;
  36. for(int i = 1; i <= n; i++){
  37. sum += a[i];
  38. if(sum <= x) continue;
  39. else{
  40. sum = a[i];
  41. drone++;
  42. }
  43. }
  44. return drone <= k;
  45. }
  46. int main()
  47. {
  48. ios_base::sync_with_stdio(0);
  49. cout.tie(0);cin.tie(0);
  50. if(fopen(name".inp","r")){
  51. freopen(name".inp","r",stdin);
  52. freopen(name".out","w",stdout);
  53. }
  54.  
  55. cin >> n >> k;
  56. ll X = 0;
  57. for(int i = 1; i <= n; i++){
  58. cin >> a[i];
  59. X += a[i];
  60. }
  61. ll l = 0, r = X, mid, res;
  62. while(l <= r){
  63. mid = (l + r) >> 1;
  64. if(check(mid)){
  65. r = mid - 1;
  66. res = mid;
  67. }
  68. else l = mid + 1;
  69. }
  70. cout << res;
  71. }
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
Success #stdin #stdout 0.01s 5300KB
stdin
Standard input is empty
stdout
6