fork(1) download
  1. #include<bits/stdc++.h>
  2.  
  3. #define MOD 1000000007
  4. #define MODSET(d) if ((d) >= MOD) d %= MOD;
  5.  
  6. using namespace std;
  7.  
  8. bool isSelected[200];
  9. vector< vector<int> > remaining, transpose;
  10. int t, n;
  11. bool hasDone = false;
  12.  
  13. void brute(int index)
  14. {
  15. if (hasDone)
  16. return;
  17.  
  18. if (index == 0)
  19. {
  20. vector< vector<int> > matrix(n);
  21.  
  22. int cnt = 0;
  23. int done = 0;
  24. for (auto s: remaining)
  25. {
  26. if (isSelected[cnt])
  27. {
  28. matrix[done] = s;
  29. done++;
  30. }
  31. cnt++;
  32. }
  33.  
  34. for (int i = 0; i < n; i++)
  35. {
  36. bool print = true;
  37.  
  38. cnt = 0;
  39. for (auto s: remaining)
  40. {
  41. if (!isSelected[cnt])
  42. {
  43. bool isEqual = true;
  44.  
  45. for (int j = 0; j < n; j++)
  46. {
  47. if (s[j] != matrix[j][i])
  48. {
  49. isEqual = false;
  50. break;
  51. }
  52. }
  53.  
  54. if (isEqual)
  55. {
  56. print = false;
  57. break;
  58. }
  59. }
  60. cnt++;
  61. }
  62.  
  63. if (print)
  64. {
  65. cout << "Case #" << t << ":";
  66. for (int j = 0; j < n; j++)
  67. {
  68. cout << " " << matrix[j][i];
  69. }
  70. cout << "\n";
  71. hasDone = true;
  72. }
  73. }
  74.  
  75. }
  76. else
  77. {
  78. for (int i = remaining.size()-1; i >= 0; i--)
  79. {
  80. if (!isSelected[i])
  81. {
  82. isSelected[i] = true;
  83.  
  84. for (int j = 0; j < n; j++)
  85. {
  86. transpose[j][index - 1] = remaining[i][j];
  87. }
  88.  
  89. int matches = 0;
  90. for (int j = 0; j < n; j++)
  91. {
  92. for (int k = remaining.size()-1; k >= 0; k--)
  93. {
  94. if (!isSelected[k])
  95. {
  96. bool isEqual = true;
  97.  
  98. for (int l = index - 1; l < n; l++)
  99. {
  100. if (remaining[k][l] != transpose[j][l])
  101. {
  102. isEqual = false;
  103. break;
  104. }
  105. }
  106.  
  107. if (isEqual)
  108. {
  109. matches++;
  110. break;
  111. }
  112. }
  113. }
  114. }
  115.  
  116. if (matches >= n-1)
  117. {
  118. brute(index - 1);
  119. }
  120.  
  121. if (hasDone)
  122. return;
  123.  
  124. isSelected[i] = false;
  125. }
  126. }
  127. }
  128. }
  129.  
  130. int main()
  131. {
  132. #ifdef VSP4
  133. freopen("input.txt", "r", stdin);
  134. freopen("output.txt", "w", stdout);
  135. #endif // VSP4
  136.  
  137. int T, i, j, k, curr;
  138. vector< vector<int> > lists;
  139.  
  140. cin >> T;
  141.  
  142. for (t = 1; t <= T; t++)
  143. {
  144. cin >> n;
  145.  
  146. memset(isSelected, false, sizeof(isSelected));
  147. lists.assign(2*n - 1, vector<int>(n));
  148. transpose.assign(n, vector<int>(n));
  149.  
  150. for (i = 0; i < 2*n - 1; i++)
  151. {
  152. for (j = 0; j < n; j++)
  153. {
  154. cin >> lists[i][j];
  155. }
  156. sort(lists[i].begin(), lists[i].end());
  157. }
  158.  
  159. sort (lists.begin(), lists.end());
  160.  
  161. remaining = lists;
  162.  
  163. hasDone = false;
  164.  
  165. brute(n);
  166. }
  167.  
  168. return 0;
  169. }
  170.  
Success #stdin #stdout 0.01s 3476KB
stdin
50
3
1 2 3
2 3 5
3 5 6
2 3 4
1 2 3
2
2 6
2 4
6 8
4
5 9 14 16
1 4 5 6
6 12 16 20
4 7 9 12
8 12 15 20
4 7 10 12
5 10 14 15
2
22 222
22 222
2 22
4
1 2 3 4
13 14 15 16
3 7 11 15
5 6 7 8
9 10 11 12
4 8 12 16
1 5 9 13
4
3 6 10 11
2 3 4 7
2 5 8 10
7 10 14 17
4 7 13 14
5 6 7 10
8 10 13 14
7
7 8 9 10 11 12 13
3 4 5 6 7 8 9
6 7 8 9 10 11 12
4 5 6 7 8 9 10
2 3 4 5 6 7 8
5 6 7 8 9 10 11
5 6 7 8 9 10 11
1 2 3 4 5 6 7
4 5 6 7 8 9 10
7 8 9 10 11 12 13
2 3 4 5 6 7 8
6 7 8 9 10 11 12
3 4 5 6 7 8 9
3
3 4 5
3 4 5
1 2 3
2 3 4
1 2 3
2
2 3
4 5
3 5
7
6 13 20 27 34 41 48
22 23 24 25 26 27 28
1 8 15 22 29 36 43
3 10 17 24 31 38 45
5 12 19 26 33 40 47
1 2 3 4 5 6 7
36 37 38 39 40 41 42
7 14 21 28 35 42 49
4 11 18 25 32 39 46
29 30 31 32 33 34 35
15 16 17 18 19 20 21
43 44 45 46 47 48 49
8 9 10 11 12 13 14
7
9 12 15 18 20 22 23
14 16 19 22 24 26 27
9 12 14 18 19 22 23
12 14 16 20 23 24 26
6 7 10 15 16 19 20
16 20 22 23 26 27 28
4 6 7 12 14 17 20
2 5 6 9 12 14 16
14 17 19 22 24 26 27
2 4 6 9 11 14 15
5 6 9 12 13 16 18
11 13 16 19 23 24 26
15 18 20 23 26 27 28
4
1 2 3 4
1 2 3 4
4 5 6 7
2 3 4 5
4 5 6 7
3 4 5 6
2 3 4 5
10
7 8 9 10 11 12 13 14 15 16
5 6 7 8 9 10 11 12 13 14
10 11 12 13 14 15 16 17 18 19
1 2 3 4 5 6 7 8 9 10
8 9 10 11 12 13 14 15 16 17
3 4 5 6 7 8 9 10 11 12
4 5 6 7 8 9 10 11 12 13
6 7 8 9 10 11 12 13 14 15
2 3 4 5 6 7 8 9 10 11
4 5 6 7 8 9 10 11 12 13
5 6 7 8 9 10 11 12 13 14
10 11 12 13 14 15 16 17 18 19
9 10 11 12 13 14 15 16 17 18
6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10
7 8 9 10 11 12 13 14 15 16
2 3 4 5 6 7 8 9 10 11
8 9 10 11 12 13 14 15 16 17
3 4 5 6 7 8 9 10 11 12
3
3 4 5
1 2 3
2 3 4
1 2 3
2 3 4
7
16 18 30 49 74 86 105
105 122 141 165 179 197 225
30 42 57 77 99 105 118
74 103 118 155 184 201 225
51 59 99 129 131 132 179
72 83 105 140 161 178 197
34 57 77 107 110 128 165
49 73 96 107 129 140 155
16 26 32 34 51 72 74
32 36 57 96 109 114 141
86 111 114 128 132 178 201
26 33 42 73 82 111 122
74 82 109 110 131 161 184
4
7 17 18 22
6 12 13 19
5 8 10 14
12 14 19 22
9 10 13 18
2 5 6 7
2 7 9 12
2
2 22
2 22
22 222
2
4 8
2 4
6 8
4
3 5 6 12
2 4 5 10
7 9 11 13
2 4 5 9
1 2 3 8
3 5 6 11
8 10 12 13
7
5 7 8 12 14 17 21
7 8 10 14 16 18 25
11 14 16 22 28 32 36
13 17 18 25 32 35 40
2 5 7 11 15 18 21
21 26 27 30 36 40 44
9 12 14 19 24 26 30
11 15 18 19 22 25 26
14 21 25 26 35 39 44
6 7 8 15 16 22 26
2 6 7 9 11 13 14
15 16 22 24 28 32 35
7 8 10 18 22 24 27
7
13 14 16 20 25 26 30
10 12 15 19 22 25 27
4 7 10 11 14 17 18
6 10 12 14 15 16 20
1 3 6 7 9 12 13
8 11 14 16 17 20 22
9 14 16 17 22 25 27
12 17 18 20 25 26 29
7 11 15 16 19 20 22
3 7 9 11 12 14 18
13 18 21 22 27 30 32
1 4 7 8 10 13 15
15 18 20 22 27 29 32
3
3 4 5
1 2 3
2 3 4
2 3 4
3 4 5
7
4 8 12 13 17 21 22
12 15 18 22 26 28 29
13 15 29 34 38 41 43
4 5 6 8 9 10 13
17 19 23 27 33 34 38
8 12 22 24 27 29 35
8 10 11 12 13 14 15
6 11 18 22 23 28 33
10 14 28 30 34 38 39
13 17 22 24 29 30 34
22 29 33 35 36 39 43
5 10 15 17 19 25 29
9 13 26 29 33 35 36
2
2 3
3 6
2 4
4
6 8 9 10
3 4 6 8
2 3 5 6
3 4 6 7
2 3 5 6
6 7 9 10
5 6 8 9
10
1 11 21 31 41 51 61 71 81 91
41 42 43 44 45 46 47 48 49 50
5 15 25 35 45 55 65 75 85 95
4 14 24 34 44 54 64 74 84 94
91 92 93 94 95 96 97 98 99 100
10 20 30 40 50 60 70 80 90 100
9 19 29 39 49 59 69 79 89 99
61 62 63 64 65 66 67 68 69 70
6 16 26 36 46 56 66 76 86 96
21 22 23 24 25 26 27 28 29 30
11 12 13 14 15 16 17 18 19 20
2 12 22 32 42 52 62 72 82 92
51 52 53 54 55 56 57 58 59 60
71 72 73 74 75 76 77 78 79 80
31 32 33 34 35 36 37 38 39 40
81 82 83 84 85 86 87 88 89 90
8 18 28 38 48 58 68 78 88 98
3 13 23 33 43 53 63 73 83 93
1 2 3 4 5 6 7 8 9 10
5
9 13 16 17 19
2 5 6 8 11
3 7 8 9 14
2 3 5 7 9
5 9 10 13 15
5 7 9 12 13
11 14 15 18 19
6 8 10 14 16
8 9 13 16 17
10
10 13 14 17 19 21 23 25 27 29
6 8 10 11 13 15 17 18 20 22
10 12 13 14 15 17 21 23 24 26
8 9 11 13 14 16 19 21 22 23
4 6 7 10 11 13 16 18 19 20
16 18 20 23 25 26 29 30 32 33
1 2 4 6 8 10 12 14 15 16
3 4 5 8 9 12 14 15 17 18
15 17 19 21 22 25 27 28 29 30
7 8 11 13 14 15 18 21 22 25
11 14 16 18 21 23 24 26 28 30
13 16 19 22 23 26 27 28 30 33
5 7 9 11 13 14 17 20 21 23
9 11 12 15 16 17 20 23 25 26
14 15 18 20 21 23 25 26 27 28
12 14 16 17 18 20 23 24 26 27
1 3 4 5 7 9 10 11 12 13
4 5 7 9 11 12 14 16 17 19
2 4 6 7 8 11 13 14 15 16
2
3 5
5 6
3 5
10
9 17 24 30 35 39 42 44 45 63
8 16 23 29 34 38 41 43 44 60
6 14 21 27 32 36 37 38 39 57
5 13 20 26 31 32 33 34 35 54
4 12 19 25 26 27 28 29 30 52
8 16 23 29 34 38 41 43 44 61
3 11 18 19 20 21 22 23 24 50
3 11 18 19 20 21 22 23 24 51
7 15 22 28 33 37 40 41 42 58
47 48 50 53 55 56 59 60 63 64
1 2 3 4 5 6 7 8 9 47
2 10 11 12 13 14 15 16 17 49
9 17 24 30 35 39 42 44 45 62
7 15 22 28 33 37 40 41 42 59
2 10 11 12 13 14 15 16 17 48
4 12 19 25 26 27 28 29 30 53
5 13 20 26 31 32 33 34 35 55
46 49 51 52 54 57 58 61 62 64
6 14 21 27 32 36 37 38 39 56
6
6 9 12 15 18 21
14 21 24 26 27 30
10 15 16 17 20 21
5 9 10 13 15 17
3 5 7 10 11 14
15 17 20 21 26 30
11 18 19 21 23 26
12 15 17 20 23 27
10 13 16 17 21 26
3 6 8 10 12 15
8 10 13 16 19 24
2
5 11
4 7
7 11
8
5 12 18 21 23 27 31 36
7 18 26 28 30 32 38 41
10 22 31 35 38 43 48 51
8 14 18 21 26 31 36 39
2 11 14 18 21 25 26 27
1 2 5 6 7 10 11 13
11 27 36 37 40 45 52 54
13 18 21 24 28 35 37 42
21 26 31 33 38 48 52 57
13 30 39 42 46 48 57 58
6 11 12 17 18 22 27 30
15 21 23 27 30 38 40 46
22 27 36 37 41 51 54 58
17 25 27 30 32 43 45 48
1 6 8 13 15 17 21 22
4
17 46 65 66
45 65 69 73
59 68 73 99
16 17 35 59
35 54 69 77
26 46 54 68
65 66 77 99
6
2 4 6 7 9 10
2 4 5 7 8 9
4 7 10 11 13 14
5 7 10 11 13 16
5 9 12 13 15 16
1 2 4 5 6 7
6 8 12 13 15 17
1 2 3 4 5 6
3 6 8 10 12 13
6 10 14 16 17 18
4 5 8 10 12 14
10
10 14 15 17 19 22 26 29 31 33
1 3 6 7 10 12 13 15 17 19
12 14 18 19 22 24 27 31 33 36
15 17 19 22 23 27 28 34 35 39
6 8 11 12 15 17 19 21 23 25
4 7 8 9 13 14 17 19 22 25
3 7 8 11 14 16 17 18 19 21
12 16 17 19 21 24 27 32 34 37
18 19 23 27 30 33 35 39 42 43
13 17 20 23 26 27 28 32 35 38
15 19 23 24 29 32 34 37 39 42
1 4 6 9 10 12 15 16 18 19
7 9 13 15 17 19 22 25 27 30
6 8 11 13 15 18 20 23 25 27
19 25 27 29 33 37 39 42 43 46
17 22 25 28 31 34 35 38 42 44
19 21 25 30 31 36 38 42 44 46
16 18 21 25 28 31 32 37 38 42
9 11 12 15 18 19 23 24 28 29
5
4 7 8 10 12
5 7 8 9 10
7 9 10 13 15
7 8 10 11 13
3 5 7 8 9
6 8 9 11 13
8 9 12 13 15
2 3 5 7 8
3 5 7 8 9
2
2 4
4 8
2 6
7
5 6 7 10 12 14 15
10 13 14 15 18 20 22
8 11 14 15 17 20 22
8 11 13 14 16 17 18
3 4 5 8 10 11 12
4 5 7 11 13 14 17
11 15 17 18 19 22 24
2 3 5 7 8 10 11
7 10 12 14 16 18 19
7 9 11 13 14 15 16
6 8 10 13 14 15 18
2 3 4 6 7 8 10
10 12 15 16 18 22 24
8
2 5 6 9 13 14 17 20
19 24 27 31 34 38 42 45
5 9 12 15 17 20 24 27
13 17 21 22 27 30 31 36
4 9 12 13 15 18 20 24
17 20 22 24 29 31 33 37
17 20 28 30 31 33 42 43
2 4 5 9 13 17 19 21
13 15 23 24 27 29 34 35
9 13 20 21 22 24 31 34
21 27 29 34 35 39 43 48
20 24 29 34 36 37 45 48
6 12 16 20 21 22 27 29
14 18 27 29 30 31 38 39
5 12 16 20 23 27 28 29
7
6 11 15 18 20 21 33
1 2 3 4 5 6 23
2 7 8 9 10 11 25
3 8 12 13 14 15 26
5 10 14 17 19 20 30
22 24 27 28 31 33 34
4 9 13 16 17 18 28
4 9 13 16 17 18 29
23 25 26 29 30 32 34
5 10 14 17 19 20 31
3 8 12 13 14 15 27
1 2 3 4 5 6 22
2 7 8 9 10 11 24
6
1 2 5 7 9 10
5 7 9 11 15 16
9 12 15 16 20 22
13 14 16 18 22 26
10 14 16 17 23 26
2 4 7 9 11 14
8 9 11 14 16 17
5 7 9 11 14 16
10 11 14 17 20 23
7 8 11 14 17 18
1 3 5 8 10 13
7
6 10 14 17 20 22 25
3 4 5 6 9 12 15
8 10 11 14 15 18 19
13 16 17 20 23 25 28
6 7 8 10 13 15 16
15 16 19 25 28 30 32
9 13 15 19 23 24 26
10 12 14 17 19 22 25
12 15 18 22 25 28 29
16 18 21 22 24 28 30
18 19 24 25 26 29 32
4 7 10 12 16 18 19
3 6 8 10 13 16 18
3
6 9 13
9 12 14
8 9 12
10 13 14
4 8 10
7
3 5 7 8 10 12 14
5 6 8 10 13 15 17
6 7 10 12 15 17 19
4 5 7 8 11 12 14
5 7 8 10 12 14 15
3 4 5 7 9 10 11
6 9 11 13 15 16 18
1 3 4 5 6 8 9
8 9 12 14 16 19 20
2 4 5 6 7 9 11
9 11 14 15 18 21 22
1 2 3 5 6 7 8
7 10 12 15 17 19 21
10
148 166 198 209 224 263 269 293 302 320
98 123 151 161 174 210 228 230 268 293
55 68 89 107 125 147 152 175 194 209
67 82 93 107 127 139 140 161 178 205
14 22 33 55 61 77 86 98 108 131
49 64 78 89 110 118 135 151 165 181
82 92 104 125 141 162 166 174 201 219
86 111 135 140 166 186 218 223 246 269
22 49 64 82 92 106 119 126 131 166
33 61 78 93 104 128 137 160 176 198
108 138 165 178 201 232 239 261 285 302
100 119 137 152 189 198 218 228 239 259
28 49 61 68 88 89 111 123 138 146
14 28 49 67 82 90 100 106 129 148
129 131 176 194 219 240 246 268 285 297
77 89 118 139 162 181 198 220 240 263
90 106 128 147 168 181 186 210 232 251
131 146 181 205 219 251 259 263 297 320
106 126 160 175 192 220 223 230 261 263
5
1 2 3 5 7
5 8 10 12 14
8 9 12 14 16
3 5 6 8 10
7 8 10 12 13
7 10 11 13 16
2 5 7 8 9
5 7 9 10 11
1 3 5 7 8
7
11 17 18 20 23 26 28
8 14 16 19 21 23 24
5 6 9 12 15 17 19
11 17 18 20 24 26 29
10 15 17 19 21 24 25
4 6 9 11 14 17 18
6 9 10 13 17 18 22
12 19 22 23 24 29 32
13 18 20 21 25 28 32
8 12 13 16 19 20 21
7 11 14 16 19 20 23
2 5 6 7 8 11 13
7 9 10 14 16 18 20
10
24 31 35 44 49 53 54 56 64 66
13 18 19 25 31 36 39 40 49 51
14 20 23 27 36 38 41 46 53 54
12 15 18 22 27 32 36 39 44 46
20 23 30 36 39 41 46 50 55 57
8 10 14 15 17 22 23 26 31 34
18 22 28 32 36 38 42 47 50 55
28 34 36 46 51 54 55 58 68 73
22 26 33 39 40 46 51 55 60 62
5 8 11 12 13 14 19 24 27 31
11 14 15 20 23 28 30 33 35 36
31 34 41 46 48 55 57 62 66 73
10 14 15 18 19 23 29 32 36 41
5 8 10 12 13 18 20 22 24 28
24 28 32 35 42 47 50 55 56 58
12 15 20 22 25 27 31 35 40 46
27 32 36 40 45 50 55 60 64 68
13 17 23 27 31 36 38 42 45 48
8 10 14 15 18 20 25 28 32 34
2
2 6
6 8
4 8
stdout
Case #1: 3 4 6
Case #2: 4 8
Case #3: 1 4 5 8
Case #4: 2 22
Case #5: 2 6 10 14
Case #6: 10 11 14 17
Case #7: 1 2 3 4 5 6 7
Case #8: 2 3 4
Case #9: 2 4
Case #10: 2 9 16 23 30 37 44
Case #11: 6 9 10 14 16 19 22
Case #12: 3 4 5 6
Case #13: 9 10 11 12 13 14 15 16 17 18
Case #14: 3 4 5
Case #15: 18 33 36 57 59 83 103
Case #16: 7 8 12 17
Case #17: 22 222
Case #18: 2 6
Case #19: 1 2 3 7
Case #20: 18 22 24 26 32 35 39
Case #21: 7 9 12 15 16 18 21
Case #22: 1 2 3
Case #23: 21 25 28 29 35 38 41
Case #24: 4 6
Case #25: 5 6 8 9
Case #26: 7 17 27 37 47 57 67 77 87 97
Case #27: 7 12 14 16 18
Case #28: 12 15 17 20 22 24 26 27 29 32
Case #29: 5 6
Case #30: 1 2 3 4 5 6 7 8 9 46
Case #31: 7 12 13 16 17 20
Case #32: 4 5
Case #33: 6 17 21 24 27 30 33 37
Case #34: 16 26 45 65
Case #35: 7 9 13 14 16 18
Case #36: 10 13 15 18 19 21 23 28 30 31
Case #37: 2 3 4 6 7
Case #38: 6 8
Case #39: 3 4 6 9 11 13 15
Case #40: 9 15 20 21 24 29 30 34
Case #41: 6 11 15 18 20 21 32
Case #42: 3 4 7 8 12 14
Case #43: 5 8 11 14 17 21 24
Case #44: 4 6 9
Case #45: 8 11 14 17 19 20 22
Case #46: 61 88 110 127 141 168 189 192 219 224
Case #47: 3 6 9 10 12
Case #48: 2 4 7 8 10 11 12
Case #49: 19 25 29 31 38 42 46 51 54 55
Case #50: 2 4