JOI는 친구 1부터 친구 N까지 총 N 명의 친구와 함께, 크리스마스 파티에 갔습니다. 크리스마스 파티 분위기도 달아오르니, JOI는 친구들과 함께 다음과 같은 게임을 하기로 했습니다.
- 가장 먼저, JOI는 N명의 친구 중 한 명을 선택합니다. 이제 그 친구를 '타겟'이라고 부릅시다.
- JOI는 타겟으로 고른 친구에게, 타겟이 되었다는 것을 몰래 알려줍니다. 타겟이 아닌 친구들은 누가 타겟인지 알 수 없습니다.
- 타겟이 아닌 친구들은 각자 타겟이 누구일까 생각해서, 그 사람의 이름을 종이에 씁니다. 타겟은 자기자신의 이름을 종이에 씁니다.
- 모든 사람이 종이에 이름을 썼다면, JOI는 타겟의 이름을 발표합니다.
- 예상이 맞은 사람은 1점을 얻습니다. 당연히, 타겟은 자신의 이름을 적었으므로, 반드시 1점을 얻습니다. 예상이 빗나간 사람은 점수를 주지 않습니다.
- 추가로, 예상이 빗나간 사람의 수가 X명일 경우, 타겟은 추가로 X점을 얻습니다.
JOI와 친구들은 이 게임을 M번 했습니다. M번의 게임을 했을 때, 각 친구들의 합계 점수를 구하세요.
입력
입력은 총 3 + M 줄이 주어집니다.
첫 번째 줄에는 친구들의 수 N (3 ≦ N ≦ 100)이 주어집니다.
두 번째 줄에는 JOI와 친구들이 했던 게임의 횟수 M (3 ≦ M ≦ 100)이 주어집니다.
세 번째 줄에는 M개의 정수 A1, A2, ..., AM 이 공백을 사이에 두고 주어집니다. i번째 (1 ≦ i ≦ M) 게임의 타겟이 친구 Ai (1 ≦ Ai ≦ N) 라는 것을 나타냅니다.
이어지는 M개의 줄 중 i(1 ≦ i ≦ M)번째 줄에는, N개의 정수 Bi,1, Bi,2, ..., Bi,N가 공백을 사이에 두고 주어집니다. 이것은 i번째 게임에서 친구 j(1 ≦ j ≦ N)가 친구 Bi,j (1 ≦ Bi,j ≦ N)의 이름을 종이에 썼다는 것을 의미합니다. 타겟은 자신의 이름을 종이에 쓰도록 되어 있으므로, j = Ai 이면, 반드시 Bi,j = j입니다.
출력
M번의 게임에서, 각각의 친구들이 얻은 합계 점수를 출력하세요.
총 N줄의 출력에서, j번째 (1 ≦ j ≦ N) 줄에는 친구 j의 합계 점수를 출력하세요.
예제 입력 1
3 4 1 2 3 2 1 1 2 3 2 2 1 1 3 2 2 2 |
예제 출력 1
예제 입력 2
5 3 3 3 1 2 4 3 3 3 4 3 3 3 1 1 3 4 1 1 |
예제 출력 2
힌트
예제 1의 경우, 3명의 친구가 4번의 게임을 합니다.
- 첫 번째 게임의 타겟은 '친구 1'이므로, 친구 1 은 2점, 친구 2 는 1점, 친구 3 은 0점을 얻습니다.
- 두 번째 게임의 타겟은 '친구 2'이므로, 친구 1 은 0점, 친구 2 는 2점, 친구 3 은 1점을 얻습니다.
- 세 번째 게임의 타겟은 '친구 3'이므로, 친구 1 은 0점, 친구 2 는 0점, 친구 3 은 3점을 얻습니다.
- 네 번째 게임의 타겟은 '친구 2'이므로, 친구 1 은 1점, 친구 2 는 1점, 친구 3 은 1점을 얻습니다.
4번의 게임 종료 후의 합계 점수는, 친구 1 은 3점, 친구 2 는 4점, 친구 3은 5점이 됩니다.
더보기
Solution
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int M, N, *friends=NULL, *target=NULL;
scanf("%d", &N);
friends=(int *)calloc(N,sizeof(int));
scanf("%d", &M);
target=(int *)malloc(M*sizeof(int));
for(int i=0;i<M;i++)
scanf("%d", &target[i]);
for(int i=0;i<M;i++)
{
int count=N;
for(int j=0;j<N;j++)
{
int choice;
scanf("%d", &choice);
if(target[i]==choice)
{
friends[j]++;
count--;
}
}
friends[target[i]-1]+=count;
}
for(int j=0;j<N;j++)
printf("%d\n", friends[j]);
free(friends);
free(target);
return 0;
}