fork download
  1. // your code goes here
  2. function test() {
  3.  
  4. var pairs = [
  5. [
  6. 0.3651525589431013,
  7. -0.27439756555180383
  8. ],
  9. [
  10. 0.3813596282820899,
  11. 0.4129001439443434
  12. ],
  13. [
  14. -0.40018595972934246,
  15. 0.036322476938139614
  16. ],
  17. [
  18. 0.20103910110236267,
  19. -0.2264911463633661
  20. ],
  21. [
  22. -0.1471193507514823,
  23. 0.1516517904486454
  24. ],
  25. [
  26. -0.19961312123638275,
  27. 0.32420867690476274
  28. ],
  29. [
  30. 0.1314693103938107,
  31. 0.08386231037821523
  32. ],
  33. [
  34. -0.032350923965245526,
  35. -0.08835329409158366
  36. ],
  37. [
  38. 0.16155915573252155,
  39. -0.4197447029259542
  40. ],
  41. [
  42. -0.3500723889425785,
  43. 0.3242683106460933
  44. ],
  45. [
  46. 0.0038728621410171193,
  47. -0.17427372192135038
  48. ],
  49. [
  50. -0.423077654432064,
  51. -0.1555870759775846
  52. ],
  53. [
  54. -0.3500406380269585,
  55. -0.3323007306131922
  56. ],
  57. [
  58. -0.15159191832180485,
  59. -0.4460865795125559
  60. ],
  61. [
  62. -0.06187302589028665,
  63. -0.37137387344903305
  64. ],
  65. [
  66. -0.25982881637857824,
  67. 0.41202334197573753
  68. ],
  69. [
  70. 0.37973732322691345,
  71. 0.21779452042026382
  72. ],
  73. [
  74. -0.42958878111592,
  75. -0.18148614115362371
  76. ],
  77. [
  78. -0.0642675349597035,
  79. -0.4440804036878956
  80. ],
  81. [
  82. -0.1496008196436347,
  83. -0.445780771513441
  84. ],
  85. [
  86. -0.37718478711604675,
  87. 0.08218318185662543
  88. ],
  89. [
  90. 0.3674431561443947,
  91. -0.49488478131287494
  92. ]
  93. ];
  94. console.time('time');
  95. var sum = 0, sum0, sum1, newSum;
  96. var selected = [];
  97.  
  98. $.each(pairs, function(k, v) {
  99. sum0 = sum + v[0];
  100. sum1 = sum + v[1];
  101.  
  102. var i = Math.abs(sum1) > Math.abs(sum0) ? 0 : 1;
  103.  
  104. selected.push(i);
  105. sum += v[i];
  106. });
  107.  
  108. var checkAgain = 0;
  109. do {
  110. $.each(pairs, function(k, v) {
  111. var selectedKey = selected[k];
  112. var nonSelectedKey = selected[k] === 1 ? 0 : 1;
  113. newSum = sum - v[selectedKey] + v[nonSelectedKey];
  114.  
  115. if (newSum > 0 && (sum < 0 || newSum < sum)) {
  116. sum = newSum;
  117. selected[k] = nonSelectedKey;
  118. checkAgain = true;
  119. console.log(sum, selected);
  120. return false;
  121. }
  122.  
  123. checkAgain = false;
  124. });
  125. } while (checkAgain);
  126.  
  127. console.log(sum, selected);
  128. console.timeEnd('time');
  129. }
  130.  
Success #stdin #stdout 0s 107072KB
stdin
Standard input is empty
stdout
Standard output is empty