fork(46) download
  1. #include <iostream>
  2. #include <climits>
  3.  
  4. /* Отражаем 1 в 0 и 0 в 1 */
  5. int flip(int bit) {
  6. return 1^bit;
  7. }
  8.  
  9. /* Возвращаем 1, если число положительное, и 0, если отрицательное*/
  10. int sign(int a) {
  11. return flip((a >> (sizeof(int) * CHAR_BIT - 1)) & 0x1);
  12. }
  13.  
  14. int getMaxNaive(int a, int b) {
  15. int k = sign(a - b);
  16. int q = flip(k);
  17. return a * k + b * q;
  18. }
  19.  
  20. int main() {
  21. std::cout << getMaxNaive(4, 5);
  22. return 0;
  23. }
Success #stdin #stdout 0s 4536KB
stdin
Standard input is empty
stdout
5