fork download
  1. #include <algorithm>
  2. #include <iomanip>
  3. #include <iostream>
  4. #include <vector>
  5. #include <set>
  6. #include <numeric>
  7. #include <map>
  8. #include <unordered_map>
  9. #include <stack>
  10. #include <queue>
  11. #include <random>
  12. #include <chrono>
  13. using namespace std;
  14. #define all(a) a.begin(), a.end()
  15. #define ll long long
  16. #define fo(i,n) for (long long i = 0; i < n; i++)
  17. #define pb push_back
  18. int main()
  19. {
  20. ll a,b,c,d,n,m,k,input,i;
  21. ios_base::sync_with_stdio(false);
  22. string sinput;
  23. cin.tie(0); cout.tie(0);
  24. cin >> i;
  25. while (i--)
  26. {
  27. cin >> n;
  28. vector<ll> nums(n*2);
  29. map<ll,ll> freq;
  30. fo(j,nums.size())
  31. {
  32. cin >> nums[j];
  33. freq[nums[j]] = 1;
  34. }
  35. ll sumdiff = 0;
  36. for (int j = 0; j < nums.size(); j+=2)
  37. {
  38. sumdiff+= abs(nums[j+1]-nums[j]);
  39. }
  40. bool cond = false;
  41. for (ll item : nums)
  42. {
  43. if (sumdiff == item)
  44. {
  45. cond = true;
  46. }
  47. }
  48. while (true)
  49. {
  50. sumdiff = 0;
  51. mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
  52. shuffle(nums.begin(),nums.end(),rng);
  53. for (int j = 0; j < nums.size(); j+=2)
  54. {
  55. sumdiff+= abs(nums[j+1]-nums[j]);
  56. }
  57. if (freq[sumdiff] == 0)
  58. {
  59. break;
  60. }
  61. }
  62. cout << sumdiff << ' ';
  63. for (ll j = 0; j < nums.size(); j+=2)
  64. {
  65. if (nums[j] < nums[j+1])
  66. {
  67. cout << nums[j+1] << ' ';
  68. cout << nums[j] << ' ';
  69. }
  70. else
  71. {
  72. cout << nums[j] << ' ';
  73. cout << nums[j+1] << ' ';
  74. }
  75. }
  76. cout << '\n';
  77. }
  78. }
Success #stdin #stdout 0.01s 5284KB
stdin
4
1
9 2
2
8 6 1 4
3
99 2 86 33 14 77
2
1 6 3 2
stdout
7 9 2 
9 8 1 6 4 
69 14 2 99 86 77 33 
4 6 3 2 1