為了玩上《艾爾登法環》 玩家吃了17天“被詛咒食物”
阿新 • • 發佈:2022-04-12
等價於:序列拆分為兩個和相等的不連續的子序列問題
有n袋糖果,分給兩個小朋友,問能否平均分配,輸入第一行表示糖果袋數,第二行表示每袋的糖果數量,答案可能有多種,只需輸出一種,如果不能平均分配輸出“-1”
樣例1
輸入
4 1 2 3 4
輸出:
5 1 4 2 3
樣例2
輸入
5 7 4 5 3 3
輸出:
11 7 4 5 3 3
樣例3
輸入
2 1 9
輸出:
-1
1 n = int(input()) 2 arr = list(map(int, input().split())) 3 4 def find(i, ans, pre):5 if pre == mid: 6 ans.append(-1) 7 if i >=len(arr) or pre>mid or ans[-1] =='-1' : return 8 ans[i] = 1 9 pre += arr[i] 10 find(i+1, ans, pre) 11 if ans[-1]!=-1: 12 ans[i] = 0 13 pre -= arr[i] 14 find(i+1, ans, pre) 15 all = sum(arr) 16if all%2!=0 or n<=1: 17 print('-1') 18 mid = all//2 19 ans = [0]*len(arr) 20 pre = 0 21 find(0, ans, pre) 22 if ans[-1] == -1: 23 print(mid) 24 print(" ".join(map(str, [arr[i] for i, k in enumerate(ans[:-1]) if k]))) 25 print(" ".join(map(str, [arr[j] for j, k in enumerate(ans[:-1]) if k == 0])))26 else: 27 print("-1")