/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Wrong Answer 1ms 556.0 KiB
#2 Wrong Answer 1ms 588.0 KiB

Code

#include <bits/stdc++.h>

using namespace std;

struct Node {
  Node *nxt[2];
  int cnt;
  Node() {
    cnt = 0;
    fill(begin(nxt), end(nxt), nullptr);
  }
};

void solve(int cs) {
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  Node *root = new Node();
  auto insert = [&](int x) -> void {
    Node *go = root;
      for (int i = 30; ~i; --i) {
      int d = x >> i & 1;
      if (!go -> nxt[d]) go -> nxt[d] = new Node();
      go = go -> nxt[d];
      go -> cnt += 1;
    }
  };
  auto qry = [&](int x) -> int {
    int ans = 0;
    Node *go = root;
    for (int i = 30; ~i; --i) {
      int d = x >> i & 1;
      if (d) {
        if (go -> nxt[!d]) {
          ans += go -> nxt[!d] -> cnt;
        }
      }
      if (!go -> nxt[d]) {
        break;
      }
      go = go -> nxt[d];
    }
    return ans;
  };
  int64_t ans = 0;
  for (int i = 0; i < n; i++) {
    ans += qry((i + 1) ^ a[i]);
    insert(a[i]);
  }
  cout << ans << "\n";
}

int32_t main() {
  cin.tie(0) -> sync_with_stdio(0);
  int t = 1;
  cin >> t;
  for (int i = 1; i <= t; i++) {
    solve(i);
  }
  return 0;
}

Information

Submit By
Type
Submission
Problem
P1198 E. Good Signal Pairs
Language
C++17 (G++ 13.2.0)
Submit At
2025-06-13 18:32:47
Judged At
2025-06-13 18:32:47
Judged By
Score
0
Total Time
1ms
Peak Memory
588.0 KiB