fork(2) download
  1. #define VAR A
  2.  
  3. #include <cassert>
  4. #include <algorithm>
  5. #include <iterator>
  6. #include <random>
  7. #include <vector>
  8. #include <functional>
  9.  
  10. int signumA(int x) {
  11. if (x > 0)
  12. return 1;
  13. if (x < 0)
  14. return -1;
  15. if (x == 0)
  16. return 0;
  17. assert(false);
  18. }
  19. int signumB(int x) {
  20. return (x>0) - (x<0);
  21. }
  22. int signumC(int x) {
  23. return std::min(std::max(-1, x), 1);
  24. }
  25. int signumD(int x) {
  26. int y = 0;
  27. if (x > 0) y = 1;
  28. if (x < 0) y = -1;
  29. return y;
  30. }
  31. int signumE(int x) {
  32. return x ? x/std::abs(x) : 0;
  33. }
  34.  
  35. #define CONCAT2(a, b) a ## b
  36. #define CONCAT(a, b) CONCAT2(a, b)
  37. #define signumX CONCAT(signum, VAR)
  38.  
  39. int main(int argc, const char *argv[]) {
  40. int length = std::atoi(argv[1]);
  41. int iterations = std::atoi(argv[2]);
  42.  
  43. std::mt19937 mersenne_engine(42); // fixed seed
  44. std::uniform_int_distribution<int> dist(-1000, 1000);
  45.  
  46. std::vector<int> nums;
  47. generate_n(back_inserter(nums), length, bind(dist, mersenne_engine));
  48.  
  49. int signumxor = 0;
  50. while (iterations--) {
  51. for (int i : nums)
  52. signumxor ^= signumX(i);
  53. }
  54. return signumxor;
  55. }
  56.  
Runtime error #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
Standard output is empty