这题没过。测试点1不知道为啥。
Sample Input:
2
5
1234567890001 95
1234567890005 100
1234567890003 95
1234567890002 77
1234567890004 85
4
1234567890013 65
1234567890011 25
1234567890014 100
1234567890012 85
Sample Output:
9
1234567890005 1 1 1
1234567890014 1 2 1
1234567890001 3 1 2
1234567890003 3 1 2
1234567890004 5 1 4
1234567890012 5 2 2
1234567890002 7 1 5
1234567890013 8 2 3
1234567890011 9 2 4
解法
n = int(input())
di = 1
whole = {}
dic = {}
for i in range(n):
k = int(input())
tmp = {}
for j in range(k):
info = input().split()
key = info[0]
val = int(info[1])
whole[key] = {'grade':val, 'group':di}
tmp[key] = {'grade':val}
sorted_tmp = sorted(tmp.keys(), key=lambda i:(-tmp[i]['grade'], i[0]))
ri = 1
rri = 1
ans_tmp = tmp
ans_key = sorted_tmp[0]
pre_score = tmp[ans_key]
ans_tmp[ans_key]['rank'] = ri
for m in range(k):
ans_key = sorted_tmp[m]
if tmp[ans_key]['grade'] != pre_score:
ri = rri
pre_score = tmp[ans_key]['grade']
ans_tmp[ans_key]['rank'] = ri
rri += 1
#print(ans_tmp)
dic[di] = ans_tmp
di += 1
print(len(whole))
sorted_whole = sorted(whole.keys(), key=lambda i:(-whole[i]['grade'], i[0]))
ri = 1
rri = 1
ans_s = sorted_whole[0]
pre_score = whole[ans_s]['grade']
for s in sorted_whole:
if whole[s]['grade'] != pre_score:
ri = rri
pre_score = whole[s]['grade']
group = whole[s]['group']
#print(group)
print(" ".join([s, str(ri), str(group), str(dic[group][s]['rank']) ]))
rri += 1