fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int maxn = 100005;
  4. int n,a[maxn],dem[maxn],sum[maxn];
  5. int main()
  6. {
  7. int i,j,x,y,t,m,cnt,cnt1;
  8. std::ios::sync_with_stdio(0);
  9. std::cin.tie(0);
  10. std::set <int> s;
  11. cin >> t;
  12. while (t--){
  13. cin >> n;
  14. m = 1 << n;cnt = 0;
  15. for (i=1;i<=m;i++) {cin >> sum[i];s.insert(sum[i]);dem[i] = 0;}
  16. for (i=1;i<=m;i++){
  17. x = std::lower_bound(sum+1,sum+m+1,sum[i]) - sum;
  18. dem[x]++;
  19. }
  20. x = std::lower_bound(sum+1,sum+m+1,0) - sum;
  21. dem[x]--;
  22. if (dem[x] == 0) s.erase(0);
  23. for (j=1;j<=n;j++){
  24. x = *s.begin();
  25. cout << x << " ";
  26. y = std::lower_bound(sum+1,sum+m+1,x) - sum;
  27. dem[y]--;
  28. if (dem[y] == 0) s.erase(x);
  29. cnt1 = cnt;
  30. for (i=1;i<=cnt1;i++){
  31. cnt++;a[cnt] = a[i] + x;
  32. y = std::lower_bound(sum+1,sum+m+1,a[cnt]) - sum;
  33. dem[y]--;
  34. if (dem[y] == 0) s.erase(a[cnt]);
  35. }
  36. cnt++;a[cnt] = x;
  37. }
  38. cout << endl;s.clear();
  39. }
  40. return 0;
  41. }
  42.  
Success #stdin #stdout 0s 16416KB
stdin
2
1
0 10
2
0 1 1 2
stdout
10 
1 1