题目描述
给定长度为 N 的序列 a 满足每个数都小于 2K。你需要执行恰好 P 次操作,每次操作是把其中一个数的某一个二进制位反转。最终你需要使得
i∑j∑ai⊕aj(i<j)
最大,其中 ⊕ 为按位异或运算。
输入格式
第一行包含整数 N、K、P,保证 1≤N≤105,1≤K≤30,1≤P≤N×K。
下一行包含 N 个整数,即序列 a。对于所有 1≤i≤N,保证 0≤ai<2K。
输出格式
P 行,每行包含两个整数 i 和 j,满足 1≤i≤N,0≤j<K,表示数字 ai 的第 j 位反转。即 ai←ai⊕2j。
你可以多次反转同一个位。如果有多个使总和最大化的解输出任意一个即可。