[백준 Python] 26145번 출제비 재분배

iwtkmn_0219·2023년 1월 19일
0

백준 Python

목록 보기
20/32
post-thumbnail

백준 26145 출제비 재분배 (브론즈 3)

문제

HCPC에는 대회가 잘 돌아가기 위한 대회 운영진이 있으며, 이는 NN명의 출제자들과 MM명의 검수자들로 이루어져있다. 출제자는 11번부터 NN번까지의, 검수자는 N+1N+1번부터 N+MN+M번까지의 번호가 매겨져 있다.

HCPC의 운영진은 대회가 끝난 뒤 각자 출제비와 검수비를 아래와 같은 방식으로 지급받는다.

우선, NN명의 출제자들에게 출제비가 지급된다. 이때 ii번 출제자는 출제비 SiS_{i}원을 지급받는다. 그 뒤로, 출제자들은 다른 운영자들에게 자신의 출제비 중 일부를 자유롭게 나눠준다. 이때 ii번 출제자는 jj번 운영자에게 Ti,jT_{i,j}원을 준다.

하이비는 각 출제자가 받는 출제비 SS와 각자가 나눠주게 될 돈 TT를 미리 받아왔고, 최종적으로는 운영자별로 얼마를 받게 될지 미리 계산해보기로 했다.

입력

첫째 줄에는 출제자와 검수자의 수 NNMM이 주어진다. (1N,M1000)(1 \le N, M \le 1000)

둘째 줄에는 각 출제자가 받은 출제비 SiS_{i}가 주어진다. (0Si100000)(0 \le S_{i} \le 100000)

셋째 줄부터 NN개의 줄에 걸쳐서 각 줄에 N+MN + M개의 수가 주어진다. i+2i+2번째 줄의 jj번째 수는 ii번 출제자가 jj번 운영자에게 나눠주기로 한 돈 Ti,jT_{i,j}를 의미한다. (0Ti,j100000;Ti,i=0;j=1N+MTi,jSi)( 0 \le T_{i,j} \le 100000; T_{i, i} = 0; \sum_{j=1}^{N+M} T_{i,j} \le S_{i} )

출력

11번 운영자부터 N+MN + M번 운영자까지 차례대로 받게 되는 돈을 출력한다.

풀이 및 회고

풀이

i번째 사람이 j번째 사람에게 돈을 주는 것이므로 그대로 구현하면 된다.

회고

브론즈 양치기나 해볼까..?

코드

n, m = map(int, input().split())
pay = list(map(int, input().split()))
result = pay + [0] * m
for i in range(n):
    tmp_ls = list(map(int, input().split()))
    for j in range(n + m):
        result[i] -= tmp_ls[j]
        result[j] += tmp_ls[j]
print(*result)

>> iwtkmn0219의 Github <<

0개의 댓글