XORPAIR

Cho số nguyên dương \(n\) (\(n\) 𝑐ℎẵ𝑛) và dãy số nguyên \(a_{1},\ a_{2},\ \ldots\ ,\ a_{n}\). Trọng số
của cặp \((i,\ j)\), kí hiệu là \(P(i,\ j)\) = \(a_{i}\) 𝑋𝑂𝑅 \(a_{j}\) \((1 \leq \ i,j \leq n,\ i\
eq \ j)\)
. Ghép các số trong dãy trên thành \(\frac{n}{2}\) cặp, khi đó trọng số của dãy bằng tổng trọng số của \(\frac{n}{2}\) cặp.

Yêu cầu: Tìm cách ghép các số thành \(\frac{n}{2}\) cặp sao trọng số của dãy nhận
giá trị nhỏ nhất và lớn nhất.

Dữ liệu vào:

  • Dòng đầu tiên chứa số nguyên \(n\ (1\ \leq n \leq 20)\);

  • Dòng thứ \(i\) trong \(n\) dòng tiếp theo chứa số nguyên \(a_{i}\ (a_{i}\ \leq 10^{9},\ 1 \leq i \leq N)\).

Kết quả:

  • Gồm một dòng ghi hai số nguyên được tách nhau bằng dấu cách. Số đầu
    tiên là trọng số nhỏ nhất của dãy và số thứ hai là trọng số lớn nhất của dãy.

Ví dụ:

Input Output
4 1 2 3 4 6 10

Giải thích: Có 3 cách ghép cặp như sau:

Cách 1: (1,2) và (3, 4). Trọng số của dãy = (1 XOR 2) + (3 XOR 4) = 3 + 7 =10
Cách 2: (1,3) và (2, 4). Trọng số của dãy = (1 XOR 3) + (2 XOR 4) = 2 + 6 = 8
Cách 3: (1,4) và (2, 3). Trọng số của dãy = (1 XOR 4) + (2 XOR 3) = 5 + 1 = 6
Cách 3 là cách ghép cặp để có trọng số nhỏ nhất, cách 1 là cách ghép cặp để
có trọng số lớn nhất.

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. trungnam (6/7)
  2. sythai (5/8)
  3. npk1605 (5/10)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]