Tier and Rank

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

요약
티어 규칙과 친구가 말한 티어가 주어질 때, 등급 시스템이 성립하지 않으면 Invalid System을, 불가능한 티어면 Liar를, 가능하면 등수 범위를 구한다.
난이도

보통10점 중 6점

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

문제

대학에 입학한 성은이는 게임을 하진 않았지만, 주변 친구들이 유행하는 게임 "Legend Legend"의 티어를 자랑하는 것에 관심이 생겼다. 티어란 게임 내 유저의 실력을 나타내기 위해 유저 등수를 기반으로 매겨지는 등급 시스템이다. 게임의 총 유저 수가 NN명일 때, 게임 내 유저의 등수는 11 이상 NN 이하의 정수로 서로 다르다.

"Legend Legend" 게임의 티어를 정하는 프로세스는 아직 티어가 정해지지 않은 유저 중에서 등수가 높은 유저부터 차례대로 상위 티어를 배정하고, 남은 사람들을 하위 티어에 배정하는 재귀적인 프로세스이다. 이때, 티어가 정해지지 않은 유저 중 상위 몇 명을 고르는 기준에 따라 고정 티어와 상대 티어로 나뉜다. 아직 티어가 정해지지 않고 남은 유저가 MM명이라고 할 때, 고정 티어와 상대 티어가 수용하는 인원수는 아래와 같이 정해진다.

  • KK명 수용할 수 있는 고정 티어: min⁡(M,K)\min(M, K)
  • KK% 수용할 수 있는 상대 티어: ⌊M×K100⌋\lfloor \frac{M \times K}{100} \rfloor (⌊x⌋\lfloor x \rfloor )는 xx 이하의 가장 큰 정수를 의미한다)

상위 티어부터 하위 티어 순으로, 티어가 수용하는 인원수만큼 해당 티어를 배정하고 다음 티어 차례로 넘어가는 것을 반복한다. 이 과정에서 모든 유저의 티어가 정해지지 않으면 올바르지 않은 등급 시스템이다.

"Legend Legend"는 같은 티어 안에서도 유저의 실력을 가르기 위해, 각각의 티어를 44개로 나눈 뒤 숫자 11, 22, 33, 44를 붙여서 세분화하고, 이름 뒤에 숫자를 붙여 함께 부른다. 붙은 숫자가 작을수록 더 높은 세분화된 티어이다. 어떤 티어에 속하는 유저의 수가 LL명이라면, 44개로 세분화된 티어에는 각각 최대 ⌈L4⌉\lceil \frac{L}{4} \rceil명의 유저를 수용할 수 있다. (⌈x⌉\lceil x \rceil 는 xx이상의 가장 작은 정수를 의미한다). 유저는 순위가 높은 순서대로 가장 높은 세분화된 티어부터 최대 수용 인원을 채울 때까지 차례대로 배정된다.

유저는 자신의 티어를 자랑할 때, "Grandmaster3"이라고 세분화된 티어로 말하는 경우도 있지만, "Grandmaster"라고 티어만 말하는 경우도 있다. 문득 성은이는 자신이 들은 친구의 티어(또는 세분화된 티어)로부터, 이 친구의 게임 내 등수의 가능한 범위를 알고 싶어졌다. 성은이를 대신해서 이 문제를 해결하자.

입력

첫째 줄에 "Legend Legend" 게임의 유저 수 NN와 티어의 수 TT가 공백으로 구분되어 주어진다. (1≤N≤1091 \leq N \leq 10^{9}, 1≤T≤1031 \leq T \leq 10^{3})

두 번째 줄부터 T+1T+1 번째 줄까지 티어에 대한 정보가 상위 티어부터 주어진다. 티어의 이름은 영문자 대문자와 소문자로 구성된 길이 10001000 이하의 문자열이며 티어의 이름은 모두 다르다.

  • 고정 티어의 경우 티어 이름과 해당 티어가 수용할 수 있는 최대 인원수 KK가 공백으로 구분되어 주어진다. (K는 0≤K≤N0 \leq K \leq N 을 만족하는 정수)
  • 상대 티어의 경우 티어 이름 뒤에 공백을 두고 백분율이 "KK%"의 형식으로 주어진다. KK는 티어 배정 프로세스 중, 아직 티어가 정해지지 않은 인원 중에서 해당 티어가 수용하는 사람들의 백분율 의미한다. (K는 0≤K≤1000 \leq K \leq 100 을 만족하는 정수)

마지막 줄에는 친구가 자랑한 티어(또는 세분화된 티어)가 주어진다. 즉 티어 이름이 주어지거나, 티어 이름 뒤에 11 이상 44 이하 숫자가 이어진 형식으로 주어진다.

출력

만약 주어진 티어들로 "Legend Legend"의 모든 유저의 티어를 정할 수 없다면 올바르지 않은 등급 시스템이므로 첫째 줄에 Invalid System이라고 출력한다. 그 외의 경우에, 친구가 자랑한 티어가 게임의 티어 시스템 내에서 실제 유저의 티어로 가능하지 않다면 Liar를 출력한다. 만약 티어 시스템에도 문제가 없고, 친구의 티어가 실제 유저의 티어로 가능한 티어라면 해당 친구의 게임 내 등수로 가능한 최소 등수, 최대 등수를 공백으로 구분하여 순서대로 출력한다.

예제3

  1. 예제 1

    입력
    100 3
    Challenger 10
    Master 50%
    Diamond 45
    Master4
    
    예상 출력
    47 55
    
  2. 예제 2

    입력
    100 3
    Challenger 10
    Master 45
    Diamond 99%
    Diamond
    
    예상 출력
    Invalid System
    
  3. 예제 3

    입력
    1000 4
    InternationalGrandmaster 3
    Grandmaster 7
    Master 10%
    Expert 100%
    InternationalGrandmaster4
    
    예상 출력
    Liar