페이지를 불러오는 중…
해결한 사람
1
명
정답률
50.00
%
시간 제한
2000
ms
메모리 제한
2048
MB
Pak Dengklek은 방금 소셜 미디어 사이트를 개발했습니다. 이 사이트를 사용하는 사용자는 명이며, 부터 까지 번호가 매겨져 있습니다. 하루는 시간입니다. 모든 사용자는 매일 동일한 이용 일정을 따릅니다. 인 각 에 대해, 사용자 는 매일 번 온라인 상태가 됩니다:
사이트의 모든 사용자는 언제든지 온라인 상태인 다른 모든 사용자에게 뉴스를 공유하고 싶어 합니다. 안타깝게도 첫째 날이 시작될 때 명의 사용자 중 한 명이 가짜 뉴스를 가지고 있으며, 이를 퍼뜨릴 것입니다. 따라서 가짜 뉴스를 가진 사용자와 만나는 모든 사용자도 첫째 날이 끝날 때 가짜 뉴스를 가지게 됩니다. 두 사용자가 동시에 온라인 상태인 시간이 적어도 한 시간 있다면 두 사용자가 만났다고 합니다.
이 가짜 뉴스는 둘째 날에도 전파됩니다. 따라서 첫째 날이 끝날 때 가짜 뉴스를 가진 사용자와 만나는 모든 사용자도 둘째 날이 끝날 때 가짜 뉴스를 가지게 됩니다. 이 과정은 이후의 날들에도 계속됩니다.
각각 정수 로 나타낼 수 있는 개의 시나리오가 있습니다. 각 시나리오에서 첫째 날이 시작될 때 가짜 뉴스를 가진 사용자는 사용자 입니다. 서로 다른 시나리오에서는 가짜 뉴스가 서로 다르게 전파될 수 있습니다. 따라서 각 시나리오에 대해 Pak Dengklek은 날이 끝날 때 가짜 뉴스를 가진 사용자의 수를 알고 싶어 합니다. 여기서 은 사용자의 수입니다.
다음 프로시저를 구현해야 합니다:
void init(int N, int S, int[] T, int[][] A, int[][] B)
count_users가 호출되기 전에 정확히 한 번 호출됩니다.int count_users(int P)
다음 호출 순서를 살펴봅시다:
init(5, 10, [2, 1, 1, 1, 1],
[[2, 7], [1], [1], [9], [5]], [[4, 9], [3], [1], [10], [6]])
count_users(0)
이는 첫째 날이 시작될 때 사용자 이 가짜 뉴스를 가지고 있음을 의미합니다. 사용자 은 사용자 과 만나고(두 번째 시간부터 세 번째 시간까지), 사용자 과도 만납니다(아홉 번째 시간에). 따라서 첫째 날이 끝날 때 두 사용자가 가짜 뉴스를 가지게 됩니다. 사용자 은 사용자 와도 만납니다(첫 번째 시간에). 따라서 둘째 날이 끝날 때 사용자 도 가짜 뉴스를 가지게 됩니다. 셋째 날, 넷째 날, 다섯째 날에는 가짜 뉴스가 더 이상 전파되지 않으므로, 다섯째 날이 끝날 때 명의 사용자가 가짜 뉴스를 가지게 됩니다. 따라서 이 프로시저는 를 반환해야 합니다.
count_users(4)
이는 첫째 날이 시작될 때 사용자 가 가짜 뉴스를 가지고 있음을 의미합니다. 사용자 는 다른 사용자와 만나지 않으므로, 다른 사용자는 가짜 뉴스를 가지지 않게 됩니다. 따라서 이 프로시저는 을 반환해야 합니다.
샘플 그레이더는 다음 형식으로 입력을 읽습니다:
샘플 그레이더는 다음 형식으로 답을 출력합니다:
count_users의 반환 값5 10 2
2 2 4 7 9
1 1 3
1 1 1
1 9 10
1 5 6
0
4
4
1
International Olympiad in Informatics (IOI) 2022, official task package; Korean translation by Reporch.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.