fork download
  1. #include <bits/stdc++.h>
  2. // v.erase( unique(all(v)) , v.end() ) -----> removes duplicates and resizes the vector as so
  3. using namespace std;
  4. #define ll long long
  5. #define lld long double
  6. const lld pi = 3.14159265358979323846;
  7. #define pb push_back
  8. #define pf push_front
  9. #define all(a) a.begin(),a.end()
  10. #define rall(a) a.rbegin(),a.rend()
  11. #define getunique(v) {sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end());}
  12. constexpr int mod = (int)(1e9+7);
  13. #define log(x) (31^__builtin_clz(x)) // Easily calculate log2 on GNU G++ compilers
  14.  
  15. int main()
  16. {ios_base::sync_with_stdio(0),cin.tie(0);
  17. int n,x,y;cin>>n>>x>>y;
  18. if(n==1){
  19. cout<<min(x,y)<<'\n';return 0;
  20. }
  21. int ans=n*max(x,y);
  22. int en=n*max(x,y);int st=0;
  23. n--;
  24. while(en>=st){
  25. int mid=en-(en-st)/2;
  26. if(mid/y+mid/x>=n){
  27. ans=mid; en=mid-1; continue;
  28. }
  29. st=mid+1;
  30. }
  31. cout<<ans+min(x,y)<<'\n';
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. return 0;
  39. }
  40. /*
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. */
Success #stdin #stdout 0.01s 5496KB
stdin
Standard input is empty
stdout
-987253588