CF1990B Array Craft
题目描述
对于一个长度为 m 的数组 b,我们定义:
- 最大前缀位置为最小的下标 i,满足 b1+…+bi=maxj=1m(b1+…+bj);
- 最大后缀位置为最大的下标 i,满足 bi+…+bm=maxj=1m(bj+…+bm)。
现给定三个整数 n、x 和 y(x>y)。请构造一个长度为 n 的数组 a,满足:
- 对于所有 1≤i≤n,ai 只能取 1 或 −1;
- a 的最大前缀位置为 x;
- a 的最大后缀位置为 y。
如果有多组满足条件的数组,输出任意一组即可。可以证明,在给定条件下总是存在这样的数组。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
对于每个测试用例:
- 唯一一行包含三个整数 n、x 和 y(2≤n≤105,1≤y<x≤n)。
保证所有测试用例中 n 的总和不超过 105。
输出格式
对于每个测试用例,输出一行 n 个用空格分隔的整数 a1,a2,…,an。
输入输出样例 #1
输入 #1
3
2 2 1
4 4 3
6 5 1
输出 #1
1 1
1 -1 1 1
1 1 -1 1 1 -1
说明/提示
在第二个测试用例中:
- i=x=4 是满足 a1+…+ai=maxj=1n(a1+…+aj)=2 的最小下标;
- i=y=3 是满足 ai+…+an=maxj=1n(aj+…+an)=2 的最大下标。
因此,数组 a=[1,−1,1,1] 是正确答案。
由 ChatGPT 4.1 翻译