Guest User

Scales

a guest
Jul 11th, 2016
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. # include "scales.h"
  2. # include <bits/stdc++.h>
  3. using namespace std;
  4. const int N = 6;
  5.  
  6. int W[N];
  7. vector< int > vrr; /// for working
  8. vector< int > grr; /// for permutation
  9. vector< pair< int, int > > stat; /// list of comparison
  10. map< pair< int, int > , int > mp_a; /// for knowing we compare pair (x, y) or not
  11. void init (int T) {
  12. //
  13. }
  14. void orderCoins () {
  15. grr.push_back(1);
  16. grr.push_back(2);
  17. grr.push_back(3);
  18. grr.push_back(4);
  19. grr.push_back(5);
  20. grr.push_back(6);
  21. stat.clear();
  22. mp_a.clear();
  23. int a, b, c, x, y, i, j, t, k;
  24. /**
  25. X = getHeaviest(1, 2, 3);
  26. X = getLightest(1, 2, 3);
  27. X = getMedian(1, 2, 3);
  28. X = getNextLightest(1, 2, 3, 4);
  29. */
  30. k = 0; /// kol of founded pairs ( P[i], P[i + 1])
  31. while(1 == 1){
  32. if(k > 6) break;
  33. vrr = grr;
  34. /// check : satisfy to list of comparison
  35. t = 1;
  36. for(i = 0; i < stat.size(); i++){
  37. a = stat[i].first;
  38. b = stat[i].second;
  39. x = y = -1;
  40. for(j = 0; j < vrr.size(); i++){
  41. if(vrr[j] == a) x = j;
  42. if(vrr[j] == b) y = j;
  43. }
  44. if(x >= y){
  45. t = 0;
  46. break;
  47. }
  48. }
  49. /// if satisfy t = 1; else t = 0;
  50. if(t == 1){
  51. for(i = 0; i + 1 < vrr.size(); i++){
  52. /// if find pair P[i] and P[i + 1] which not situated in list of comparison
  53. if(mp_a[make_pair(vrr[i], vrr[i + 1])] == 0){
  54. k++;
  55. if(i + 2 < vrr.size()){
  56. a = vrr[i];
  57. b = vrr[i + 1];
  58. c = vrr[i + 2];
  59. x = getLightest(a, b, c);
  60. if(x != a){
  61. stat.push_back(make_pair(x, a));
  62. mp_a[make_pair(x, a)] = 1;
  63. }
  64. if(x != b){
  65. stat.push_back(make_pair(x, b));
  66. mp_a[make_pair(x, b)] = 1;
  67. }
  68. if(x != c){
  69. stat.push_back(make_pair(x, c));
  70. mp_a[make_pair(x, c)] = 1;
  71. }
  72. if(vrr[i] != x){
  73. t = 0;
  74. break;
  75. }
  76. }
  77. else {
  78. a = vrr[i - 1];
  79. b = vrr[i];
  80. c = vrr[i + 1];
  81. x = getHeaviest(a, b, c);
  82. if(x != a){
  83. stat.push_back(make_pair(a, x));
  84. mp_a[make_pair(a, x)] = 1;
  85. }
  86. if(x != b){
  87. stat.push_back(make_pair(b, x));
  88. mp_a[make_pair(b, x)] = 1;
  89. }
  90. if(x != c){
  91. stat.push_back(make_pair(c, x));
  92. mp_a[make_pair(c, x)] = 1;
  93. }
  94. if(vrr[i + 1] != x){
  95. t = 0;
  96. break;
  97. }
  98. }
  99. }
  100. }
  101. }
  102.  
  103. if((t == 0) && (next_permutation(grr.begin(), grr.end()) == 0)) break;
  104. }
  105. vrr = grr;
  106. for(int i = 0; i < vrr.size(); i++){
  107. W[i] = vrr[i];
  108. }
  109. answer(W);
  110. }
Add Comment
Please, Sign In to add comment