fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #ifndef ONLINE_JUDGE
  5. #include "template.cpp"
  6. #else
  7. #define debug(...)
  8. #define debugArr(a, n)
  9. #endif
  10.  
  11. #define io ios_base::sync_with_stdio(false); cin.tie(NULL);
  12. #define endl '\n'
  13.  
  14. void Wah() {
  15. io;
  16. #ifndef ONLINE_JUDGE
  17. freopen("input.txt", "r", stdin);
  18. // freopen("output.txt","w",stdout);
  19. #endif
  20. }
  21.  
  22. typedef vector<long long> vll;
  23. typedef long double ld;
  24. #define int long long
  25. #define ll int
  26. typedef pair<int,int> pii;
  27.  
  28.  
  29.  
  30.  
  31.  
  32. const int N = ( 1 << 24 );
  33. pair<int,int> dp[N];
  34. void senritsu() {
  35.  
  36. int n; cin >> n;
  37. int a[n]; for ( int i = 0; i < n; i++ ) cin >> a[i];
  38.  
  39. for ( int i = 0; i < N; i++ ) dp[i] = {INT_MAX, INT_MIN};
  40. for ( int i = 0; i < n; i++ ) dp[a[i]] = {i,i};
  41.  
  42. for ( int i = 0; i < 24; i++ ){
  43. for ( int mask = 0; mask < N; mask++ ){
  44. if ( (mask & (1<<i)) != 0 ){
  45. dp[mask] = {
  46. min(dp[mask].first, dp[mask^(1<<i)].first),
  47. max(dp[mask].second, dp[mask^(1<<i)].second),
  48. };
  49. }
  50. }
  51. }
  52.  
  53. int mask = N - 1;
  54. for ( int i = 0; i < n; i++ ){
  55.  
  56. int f, s;
  57. int x = ( mask ^ a[i] );
  58.  
  59. f = dp[x].first;
  60. s = dp[x].second;
  61.  
  62. if ( f != i && f >= 0 && f < n ){
  63. cout << a[f] << ' ';
  64. continue;
  65. }
  66. if ( s != i && s >= 0 && s < n ){
  67. cout << a[s] << ' ';
  68. continue;
  69. }
  70.  
  71. cout << -1 << ' ';
  72.  
  73. }
  74.  
  75. }
  76.  
  77. signed main() {
  78. // 君は分かってるかな 教えてくれた 戻らないその幸せは
  79. Wah();
  80. int tt = 1;
  81. // cin >> tt;
  82. int i = 1;
  83. while ( tt-- > 0 ) {
  84. // cout << "Case " << i++ << ": ";
  85. senritsu();
  86. }
  87. return 0;
  88. }
Success #stdin #stdout 0.87s 265708KB
stdin
5
10 6 9 8 2
stdout
-1 9 6 6 9