#677. 数据包区间校验

数据包区间校验

题目描述

某通信设备将每个数据包记录为 00255255 之间的整数。为了检查一段连续数据包,小 A 定义了两个指标:校验值为这一段所有整数按位异或的结果;亮灯数为这一段所有整数按 88 位二进制表示时,二进制位 11 的总个数。若校验值的 88 位二进制表示中 11 的个数为偶数,则认为该区间状态为 OK,否则状态为 WARN。给定数据包序列和若干个区间询问,请输出每个区间的状态、校验值和亮灯数。

输入格式

第一行包含两个整数 nnqq,表示数据包个数和询问个数。

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n

接下来 qq 行,每行包含两个整数 llrr,表示询问从第 ll 个到第 rr 个数据包组成的连续区间。

输出格式

对于每个询问,输出一行。若状态为 OK,输出 OK checksum ones;若状态为 WARN,输出 WARN checksum ones。其中 checksum 为区间校验值,ones 为区间亮灯数,三项之间用一个空格分隔。

样例

5 3
3 5 7 8 15
1 3
2 4
4 5
WARN 1 7
OK 10 6
WARN 7 5

样例解释

11 个询问中,357=13 \oplus 5 \oplus 7 = 1,亮灯数为 2+2+3=72+2+3=7。校验值 11 的二进制中有 1111,为奇数,因此状态为 WARN

数据范围

1n,q1000001 \le n,q \le 1000000ai2550 \le a_i \le 255

所有输入均为整数。