fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <map>
  5. #include <cmath>
  6. #include <limits>
  7. using namespace std;
  8.  
  9. template <typename T>
  10. T average(T _l, T _r)
  11. {
  12. T int_part_l = _l / 2;
  13. T int_part_r = _r / 2;
  14. T fract_part_l = (_l % 2);
  15. T fract_part_r = (_r % 2);
  16. T result = int_part_l + int_part_r;
  17.  
  18. T fract_part_sum = fract_part_l + fract_part_r;
  19. if (!result || ((fract_part_sum % 2) == 0))
  20. return result;
  21. if (result > 0)
  22. result = result - ((fract_part_sum > 0) ? 0 : 1);
  23. else
  24. result = result + ((fract_part_sum > 0) ? 1 : 0);
  25. return result;
  26. }
  27.  
  28. int main() {
  29. cout << average(-1,0) << endl;
  30. cout << average(1,0) << endl;
  31. cout << average(-1,1) << endl;
  32. cout << average(-1,2) << endl;
  33. cout << average(-1,3) << endl;
  34. cout << average(-3,1) << endl;
  35. cout << average(-4,-1) << endl;
  36. cout << average(-4,-2) << endl;
  37. cout << average(4,1) << endl;
  38. cout << average(4,2) << endl;
  39. return 0;
  40. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
0
0
0
0
1
-1
-2
-3
2
3