구현 문제이다.
예제
3
1 4
2 4
1 4
10
1 10
1 10
2 10
3 10
1 9
1 8
1 7
2 3
3 1
3 1
위를 통해 규칙을 알 수 있어, 공식이 나온다.
현재 볼 = (여태까지 총 합) - (같은 수의 크기 합) - (같은 크기의 크기 합) + 내 크기
import sys
read = sys.stdin.readline
n = int(read())
d = {i: [] for i in range(n)}
answer = [0] * n
totalSum = 0
arrC = [0] * 200020
arrS = [0] * 2020
for i in range(n):
c, s = map(int, read().split())
d[i].append(s)
d[i].append(c-1)
colorBall = list(d.items())
colorBall.sort(key=lambda x: (x[1]))
for i in range(n):
idx, [weight, color] = colorBall[i]
arrC[color] += weight
arrS[weight] += weight
totalSum += weight
answer[idx] = totalSum - arrC[color] - arrS[weight] + weight
if i != 0 and weight == colorBall[i-1][1][0] and color == colorBall[i-1][1][1]:
answer[idx] = answer[colorBall[i-1][0]]
print('\n'.join(map(str, answer)))