fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define ld long double
  4. #define ull unsigned long long
  5. #define pb(x) emplace_back(x)
  6. #define testcase int t ; cin>>t ; while(t--)
  7. #define fx(x) fixed<<setprecision(x)
  8. #define endl "\n"
  9. #define soso ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
  10. #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
  11. #define arrayn int n;cin>>n;int x[n]; for ( int i = 0 ; i < n ; i++){cin>>x[i];}
  12. #define tolower(x) transform(x.begin(), x.end(), x.begin(), ::tolower);
  13. #define toupper(x) transform(x.begin(), x.end(), x.begin(), ::toupper);
  14. using namespace std ;
  15. int main (){
  16. int n;
  17. cin>>n;
  18. int h ;
  19. cin>>h;
  20. int arr[n];
  21. int mx = INT_MIN;
  22. for(int i=0;i<n;i++)
  23. {
  24. cin>>arr[i];
  25. mx = max(mx,arr[i]);
  26. }
  27. if(h==n)
  28. {
  29. cout<<mx<<endl;
  30. }
  31. else
  32. {
  33. int fir =1;
  34. ll last = mx;
  35. while(fir<last)
  36. {
  37. ll mid =(fir+last)/2;
  38.  
  39. double temp;
  40. int ans {};
  41.  
  42. for(int i = 0; i<n;i++)
  43. {
  44.  
  45. temp=ceil((double)arr[i]/(double)mid);
  46.  
  47. ans+=temp;
  48. }
  49.  
  50. if(ans==h)
  51. {
  52. cout<<mid<<endl;
  53. return 0;
  54. }
  55. else if(ans<h)
  56. {
  57. last=mid;
  58. }
  59. else
  60. {
  61. fir =mid;
  62. }
  63.  
  64. }
  65.  
  66. }
  67.  
  68. }
  69.  
Success #stdin #stdout 0.01s 5520KB
stdin
4 8
2 7 6 11
stdout
4