本题需要为给定的排列 a1,a2,…,an(1…n 的一个排列)中的每个数赋予正号或负号,使得带符号的和等于目标值 x。
设所有数的总和为 S=1+2+⋯+n=2n(n+1),也就是输入数组元素的总和。
设正号部分的和为 P,负号部分所有数的绝对值之和为 N,则有:
魔法师准备激活一组符文石,符文石上刻有编号 1 到 n,但它们的排列顺序被打乱了,形成了一个长度为 n 的序列 a1,a2,…,an,其中每个编号恰好出现一次。激活第 i 个符文石时,可以选择正向激活,释放大小为 ai 的能量;或者反向激活,释放大小为 −ai 的能量。魔法师希望所有符文石释放的总能量恰好等于 x。
请你为每个符文石指定激活方向,即决定其前面的符号为 '+' 或 '-',使得 ∑i=1nsi⋅ai=x,其中 si∈{+1,−1}。
约束:序列长度 n 不超过 105,目标值 x 满足 0≤x≤109,序列中的元素均为整数且满足 1≤ai≤n,且所有 ai 互不相同。
第一行包含两个正整数 n 和 x。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.