구호 물품

시간 제한1초메모리 제한128 MB

요약
줄의 길이 N, 공급품 종류 T, 종류당 상자 수 B, 필요한 종류 S가 주어질 때, S를 두 번째로 많이(동점이면 가장 많이) 받는 위치를 찾는다.
난이도

보통10점 중 4점

유형
수학, 구현, 시뮬레이션, 완전 탐색
정답자
아직 제출이 없습니다

문제

눈보라 때문에 당신과 가족은 춥고 배고프며 지쳐 있습니다. 설상가상으로 전기까지 끊겨 어디로도 차를 몰고 갈 수 없습니다. 다행히 근처 구호소에서 하루에 몇 번씩 음식과 담요 같은 물품을 나눠 줍니다. 물품이 아주 특정한 규칙으로 배분된다는 것을 알아채린 당신은, 이를 이용해 가족에게 가장 필요한 물품을 얻으려 합니다.

물품을 받기 위해 NN명이 한 줄로 서기 시작합니다. 구호소에는 TT가지 종류의 물품이 있고, 각 종류마다 정확히 BB개의 상자가 있습니다. 줄의 첫 번째 사람은 1번 종류의 상자를, 두 번째 사람은 2번 종류의 상자를 받는 식으로 이어집니다. 마지막 종류인 TT번 상자를 나눠 준 다음에는 다시 1번 종류로 돌아갑니다. 줄의 끝에 도달하면 다시 줄의 첫 번째 사람부터 나눠 주되, 종류는 방금 나눠 준 다음 종류부터 이어서 세업니다. 즉 상자를 하나 나눠 줄 때마다 사람과 종류가 동시에 하나씩 다음으로 넘어갑니다. 이 과정은 상자가 모두 소진될 때까지(총 T×BT \times B개) 계속됩니다.

가족에게 가장 필요한 물품의 종류 SS를 알고 있는 당신은, SS번 종류의 상자를 두 번째로 많이 받을 수 있는 자리에 서고 싶습니다. 항상 가장 많이 받으면 의심을 살 수 있기 때문입니다. 다만 SS번 종류의 상자를 가장 많이 받는 자리가 여러 개라면, 가장 많이 받아도 괜찮으며, 그 자리들 중에서는 줄의 끝에 가장 가까운(자리 번호가 가장 큰) 자리를 택합니다. 접근하기가 더 쉽기 때문입니다. 두 번째로 많이 받는 자리가 여러 개인 경우에도 같은 규칙을 적용합니다.

입력

첫째 줄에 데이터 집합의 개수 KK가 주어집니다. 이어서 KK개의 줄에 각각 네 정수 NN, TT, BB, SS가 주어집니다. 모든 정수는 1 이상 100 이하입니다. 또한 N≥2N \ge 2이고 S≤TS \le T입니다.

출력

각 데이터 집합마다 한 줄에 “Data Set x:”를 출력합니다. 여기서 xx는 데이터 집합의 번호(1부터 시작)입니다. 그다음 줄에는 당신이 서야 할 자리의 번호를 출력합니다. 연속한 두 데이터 집합 사이에는 빈 줄을 하나 넣습니다.

예제1

  1. 예제 1

    입력
    2
    4 6 3 5
    4 3 6 1
    
    예상 출력
    Data Set 1:
    3
    
    Data Set 2:
    4