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. ll w,h,n;cin>>w>>h>>n;
  18. ll en=n,st=1;ll ans=max(w,h)*n;
  19. while(en>=st){
  20. ll mid=en-(en-st)/2;
  21. if(mid*w>=(n+mid-1)/mid*h){
  22. ans=min(ans,mid*w);
  23. en=mid-1; continue;
  24. }
  25. st=mid+1;
  26. }
  27. swap(w,h);
  28. en=n;st=1;
  29. while(en>=st){
  30. ll mid=en-(en-st)/2;
  31. if(mid*w>=(n+mid-1)/mid*h){
  32. ans=min(ans,mid*w);
  33. en=mid-1; continue;
  34. }
  35. st=mid+1;
  36. }
  37. cout<<ans<<'\n';
  38.  
  39.  
  40.  
  41.  
  42.  
  43. return 0;
  44. }
  45. /*
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63. */
Success #stdin #stdout 0.01s 5516KB
stdin
Standard input is empty
stdout
234806042350944