923C - Perfect Security - CodeForces Solution


data structures greedy strings trees *1800

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  const long long mxn = 32 * 3e5;
  vector<vector<long long>*> tr(mxn);
  long long n;
  cin >> n;
  vector<long long> a(n);
  for (long long i = 0; i < n; ++i) {
    cin >> a[i];
  }
  vector<long long> cnt(mxn);
  long long tot = 1;
  auto ins = [&](long long x) {
    long long p = 1;
    ++cnt[p];
    for (long long i = 30; i >= 0; --i) {
      long long b = (x >> i) & 1;
      if (!tr[p]) {
        tr[p] = new vector<long long>(2);
      }
      if (!(*tr[p])[b]) {
        (*tr[p])[b] = ++tot;
      }
      p = (*tr[p])[b];
      ++cnt[p];
    }
    ++cnt[p];
  };
  auto qry = [&](long long x) {
    long long p = 1;
    --cnt[p];
    long long res = 0;
    for (long long i = 30; i >= 0; --i) {
      long long b = (x >> i) & 1;
      if (!tr[p] || cnt[(*tr[p])[b]] <= 0) {
        p = (*tr[p])[!b];
        res += (1 << i);
      } else {
        p = (*tr[p])[b];
      }
      --cnt[p];
    }
    --cnt[p];
    return res;
  };
  for (long long i = 0; i < n; ++i) {
    long long b;
    cin >> b;
    ins(b);
  }
  for (long long i = 0; i < n; ++i) {
    cout << qry(a[i]) << ' ';
  }
  cout << '\n';
  return 0;
}
// CAxLUsqDnJpPQXAQrstkugFNFnVqwRmkpcjdPllHQrSPolOgdBlLCaaBEvtjmwnlRGgdiEHKoqJpbdSdPgDBBnzlGoPPSONjBSwzlqLlsiERiHgHgrEqwwpNgbiGfXoC


Comments

Submit
0 Comments
More Questions

1713C - Build Permutation
1699A - The Third Three Number Problem
1617B - GCD Problem
841A - Generous Kefa
1690B - Array Decrements
1692C - Where's the Bishop
104A - Blackjack
1438A - Specific Tastes of Andre
1711C - Color the Picture
1194C - From S To T
110B - Lucky String
1114A - Got Any Grapes
224B - Array
125B - Simple XML
567B - Berland National Library
431B - Shower Line
282C - XOR and OR
1582B - Luntik and Subsequences
609A - Флеш-карты
1207A - There Are Two Types Of Burgers
371C - Hamburgers
343B - Alternating Current
758B - Blown Garland
1681B - Card Trick
1592A - Gamer Hemose
493D - Vasya and Chess
1485A - Add and Divide
337B - Routine Problem
1392D - Omkar and Bed Wars
76E - Points