luogu#P9277. [AGM 2023 资格赛] 反转

[AGM 2023 资格赛] 反转

题目描述

给定长度为 NN 的序列 aa 满足每个数都小于 2K2^K。你需要执行恰好 PP 次操作,每次操作是把其中一个数的某一个二进制位反转。最终你需要使得

ijaiaj(i<j)\sum_i\sum_j a_i\oplus a_j(i<j)

最大,其中 \oplus 为按位异或运算。

输入格式

第一行包含整数 NKPN、K、P,保证 1N105,1K30,1PN×K1≤N≤10^5,1≤K≤30,1≤P≤N\times K

下一行包含 NN 个整数,即序列 aa。对于所有 1iN1≤i≤N,保证 0ai<2K0≤a_i<2^K

输出格式

PP 行,每行包含两个整数 iijj,满足 1iN,0j<K1≤i≤N, 0≤j<K,表示数字 aia_i 的第 jj 位反转。即 aiai2ja_i\leftarrow a_i \oplus 2^j

你可以多次反转同一个位。如果有多个使总和最大化的解输出任意一个即可。

2 5 1
0 31
1 0
4 2 2
0 0 2 2
4 0
3 0
5 6 4
63 15 0 10 5

5 5
4 5
4 4
5 4