fork download
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<bits/stdc++.h>
  3. #define pb push_back
  4. #define endl '\n';
  5. #define sz(s) int(s.size())
  6. #define Ceil(x,y) ((x+y-1)/y)
  7. #define all(v) ((v).begin()),((v).end())
  8. #define allr(v) ((v).rbegin()), ((v).rend())
  9. #define mem(x,y) memset(x,y,sizeof(x))
  10. #define I64 int
  11. typedef long long ll;
  12. typedef unsigned long long ull;
  13. typedef double dl;
  14. const ll mod = ll(1e9 + 7);
  15. const double PI = acos(-1.0);
  16. const int N = (int)1e6 * 2, OO = 0x3f3f3f3f;
  17. using namespace std;
  18. void Selim()
  19. {
  20. std::ios_base::sync_with_stdio(0);
  21. cin.tie(NULL);
  22. cout.tie(NULL);
  23. #ifndef ONLINE_JUDGE
  24. freopen("input.txt", "r", stdin);
  25. freopen("output.txt", "w", stdout);
  26. #endif
  27. }
  28. int dx[8] = { 1, 0, -1, 0, -1, 1, -1, 1 };
  29. int dy[8] = { 0, 1, 0, -1, -1, 1, 1, -1 };
  30. ll gcd(ll a, ll b) { return !b ? a : gcd(b, a % b); }
  31. ll LCM(ll a, ll b) { return a / gcd(a, b)*b; }
  32. //ll Mod(ll x, ll m){ return ((x % m) + m) % m; }
  33. //ll fact(long long n) { return !n ? 1 : n * fact(n - 1); }
  34. //transform(s.begin(), s.end(), s.begin(), ::tolower);
  35. //palindrom if(s==string(s.rbegin(),s.rend()))
  36. //memset(arr,0,sizeof arr);
  37. /*
  38. *********************************************************************************************
  39.  
  40. If you want something you've never had, you must be willing to do something you've never done
  41.  
  42. *********************************************************************************************
  43. */
  44. ll n, p, q;
  45. vector<ll>v;
  46. bool ok(ll md){
  47. ll x = q*md, need = 0;
  48. for (int i = 0; i < n; i++){
  49. ll rem = v[i] - x;
  50. if (rem>0){
  51. if (p == q)return false;
  52. ll z = p - q;
  53. need += Ceil(rem, z);
  54. }
  55. }
  56. return need <= md;
  57. }
  58. int main()
  59. {
  60. Selim();
  61. cin >> n >> p >> q;
  62. v.resize(n);
  63. for (int i = 0; i < n; i++){
  64. cin >> v[i];
  65. }
  66. sort(all(v));
  67. ll lo = 0, hi = 1e9, md, ans = 0;
  68. while (lo <= hi){
  69. md = (lo + hi) >> 1;
  70. if (ok(md)){
  71. ans = md;
  72. hi = md - 1;
  73. }
  74. else{
  75. lo = md + 1;
  76. }
  77. }
  78. cout << ans << endl;
  79. return 0;
  80. }
Success #stdin #stdout 0s 5424KB
stdin
Standard input is empty
stdout
0