来自这里的任务https://codeforces.com/problemset/problem/701/A
我意识到我可以,但偶然发现当我在原始列表中查找一个数字时,只采用第一个索引。如果可能的话,没有字典或定义的解决方案是可取的,尚未研究。
健康)状况:
一副牌中有n张牌(n是偶数)。每张卡片上都写有一个正整数。新的纸牌游戏将由 n/2 人玩。在游戏开始之前,每个玩家将被准确地发两张牌,并且从牌组中的每张牌将准确地发给一个玩家。
你的任务是找到一种分配卡片的方法,以便每个玩家都拥有相同的数字总和,写在他收到的卡片上。保证输入数据总是可能的。
规格 输入 输入的第一行包含一个正整数 n (2 ≤ n ≤ 100) — 牌的数量。保证 n 是偶数。
第二行包含 n 个正整数 a1, a2, ..., an (1 ≤ ai ≤ 100) 的序列,其中 ai 等于写在第 i 张卡片上的数字。
输出 输出 n / 2 对整数,每行一对 - 要给每个玩家的牌的数量。每张牌都必须发给一个玩家。卡片的编号顺序与输入数据中描述的顺序相同,从 1 开始。保证输入数据的答案始终存在。如果有多个可能的正确答案,则允许打印其中任何一个。
n = int(input())
a = list(map(int, input().split()))
b = a.copy()
tmp = sum(a) // (n // 2)
a.sort()
a.reverse()
x = []
for i in range(n // 2):
y = []
j = 0
while sum(y) != tmp:
if (sum(y) + a[j]) <= tmp:
y.append(a[j])
del (a[j])
else:
j += 1
x.append(y)
itog = []
for i in range(n // 2):
itog.append([0] * 2)
for i in range(n//2):
for j in range(2):
itog[i][j] = b.index(x[i][j]) + 1 # вот здесь проблема
for i in itog:
print(*i)