#CSP202512A. 集合

集合

时间限制: 1.0 秒

空间限制: 512 MB

题目描述

小 C 现在有 mm 个询问,第 ii 个询问给出两个非空不可重的正整数集合 SiS_iTiT_i,集合中元素均在 [1,n][1,n] 内。小 C 需要回答每个询问给出的两个集合是否相等。

小 C 采取了如下做法: 首先生成一个长度为 nn 的非负整数序列 a1,a2,,ana_1,a_2,\cdots,a_n。然后定义函数,

f(S)=iSai f(S)=\bigoplus_{i\in S}a_i

其中 \oplus 为按位异或运算,即 C++/Java/Python 中的 ^ 运算符。 如果第 ii 个询问给出的集合满足 f(Si)=f(Ti)f(S_i)=f(T_i),那么小 C 便认为这两个集合相等。

现在小 C 给出了他生成的序列 aa。你需要判断,对于这 mm 个询问,小 C 的做法能否得到正确答案,如果正确则输出 correct,否则输出 wrong

输入格式

从标准输入读入数据。

第一行两个正整数 n,mn,m,表示集合内元素的值域和询问个数。

第二行给出 nn 个非负整数,表示小 C 生成好的序列 a1,a2,,ana_1,a_2,\cdots,a_n

接下来 mm 行,每行描述一个集合 SiS_i。每一行首先会给出一个正整数 Si|S_i|,表示集合 SiS_i 的大小。接下来在这行内会给出 Si|S_i| 个正整数,为该集合内的元素,保证按照严格递增的顺序给出

接下来 mm 行,每行描述一个集合 TiT_i。每一行首先会给出一个正整数 Ti|T_i|,表示集合 TiT_i 的大小。接下来在这行内会给出 Ti|T_i| 个正整数,为该集合内的元素,保证按照严格递增的顺序给出

请注意,本题先输入所有询问中的集合 SS,再输入所有询问中的集合 TT

输出格式

输出到标准输出。

输出 mm 行,第 ii 行输出一个字符串,内容为 correct 或者 wrong,表示小 C 的做法在第 ii 个询问中能否得到正确的答案。

5 3
1 2 3 0 4
1 3
2 3 4
2 3 5
2 1 2
2 1 2
2 3 5
wrong
wrong
correct

样例 1 解释

第一个询问:S1=1|S_1|=1T1=2|T_1|=2,两个集合大小不同,则集合必然不相等;但 f(S1)=a3=3f(S_1)=a_3=3f(T1)=a1a2=3f(T_1)=a_1\oplus a_2=3,故小 C 的做法得不到正确答案。

第二个询问:比较两个集合是否相等,仅需将两个集合内的元素升序排列依次比较对应位置的元素是否相等。两个集合最小的数字不相等,故两个集合不相等;但 f(S2)=a3a4=3f(S_2)=a_3\oplus a_4=3f(T2)=a1a2=3f(T_2)=a_1\oplus a_2=3,故小 C 的做法仍然得不到正确答案。

第三个询问:将两个集合内元素升序排列,排在第一位和第二位的元素均对应相等,故这两个集合相等;且 f(S3)=a3a5=7f(S_3)=a_3\oplus a_5=7f(T3)=a3a5=7f(T_3)=a_3\oplus a_5=7,故小 C 的做法得到了正确的答案。

样例 2

见题目文件区的 2.in2.ans

子任务

50%50\% 的测试数据满足:SiTi|S_i|\ne |T_i|

100%100\% 的测试数据满足:$1\le n\le 10^{4},~1\le m\le 100,~0\le a_i<2^{31},~1\le |S_i|,|T_i|\le 10^{3}$,且 SiS_iTiT_i 内所有元素都是 [1,n][1,n] 内的整数。