#THU20172C. 偏差

    ID: 233 Type: Default 1000ms 512MiB Tried: 1 Accepted: 1 Difficulty: 4 Uploaded By: Tags>清华推研机试夏令营字符串KMP算法基础差分

偏差

时间限制: 1.0 秒

空间限制: 512 MB

题目背景

wangyurzee7 和 Yazid 是好朋友。

题目描述

wangyurzee7 是一个繁忙的工作者,他每天都要处理许多有趣、复杂的问题。但由于能力有限,他总会出各种各样的偏差,这让 Yazid 头疼不已。

有一天,wangyurzee7 收到了一个任务:他获得了一个长度为 nn 的序列 AA(下标从 11 开始),他需要选择这个序列中的一个长度为 mm 的连续子区间,然后把这段区间内的数按顺序写下来,得到序列 BB

这个任务非常简单,但 wangyurzee7 实在是太弱了,所以他在做的时候还是出了偏差。他有一个偏差值 kk,当他在抄写得到序列 BB 的时候,他把 BB 中的每个元素都加上了 kk(其中 kk 是一个整数)!

也就是说,假设原序列为 A1AnA_1 \cdots A_n,wangyurzee7 取的子区间是 [l,l+m1][l,l+m−1],那么对于 1im1 \le i \le m,都有 Bi=Al+i1+kB_i=A_{l+i−1}+k

Yazid 勃然大怒,他根本没想到这么简单的任务 wangyurzee7 都不能胜任。他把 wangyurzee7 狠狠地批判了一番。

当然啦,责任还是要由出偏差的人来承担。可是 wangyurzee7 并不记得他的偏差值 kk。无奈之下,他只好退而求其次,提出了一些更模糊的问题:

  1. 偏差值 kk 的取值有几种可能;
  2. 偏差值绝对值 k|k| 的最小值是多少;
  3. 他选择的子区间的左端点 ll 有几种取值可能;
  4. 他选择的子区间的左端点 ll 最左可能是多少;
  5. 他选择的子区间的左端点 ll 最右可能是多少。

既然要求的东西变少了,问题也就变得更简单了。请你帮帮可怜的 wangyurzee7 解决这些问题。

输入格式

从标准输入读入数据。

本题包含多组测试数据。

第一行一个正整数 TT 表示数据组数。

对于每组测试数据:

第一行一个正整数 nn,表示序列 AA 的长度。

第二行 nn 个用空格隔开的非负整数 A1AnA_1 \cdots A_n,描述了序列 AA

第三行一个正整数 mm,表示序列 BB 的长度。

第四行 mm 个用空格隔开的非负整数 B1BmB_1…B_m,描述了序列 BB

输出格式

输出到标准输出。

对于每组数据:

输出 55 个用空格隔开的整数,依次表示 55 个问题的答案。特别地,对于问题 2,4,52,4,5,如果无解,请输出 00 作为答案。

4
5
2 3 3 3 3
2
6 7
10
1 1 3 2 1 3 2 1 2 2
3
1 3 2
5
100 200 300 900 1000
2
800 900
4
2 3 3 3
2
1 233
1 4 1 1 1
1 0 2 2 5
3 100 3 1 4
0 0 0 0 0

子任务

对于 30%30\% 的数据,保证 n100n \le 100,序列中元素的值不超过 10001000

对于另外 20%20\% 的数据,保证 n1000n \le 1000

对于另外 20%20\% 的数据,保证序列中元素的值不超过 100100

对于 100%100\% 的数据,保证 T6, 1mn105T \le 6,~1 \le m \le n \le 10^5,序列中元素的值不超过 10910^9