Please Please Please
시간 제한2초메모리 제한1024 MB
학생들의 점수, 요청한 등급, 'please' 횟수가 주어질 때 많이 요청한 학생부터 만족하도록 A, B, C, D 컷오프를 정합니다.
문제
당신은 사람들을 기쁘게 하고 싶었고, 적어도 실제로 그렇게 해 왔다. 이제 당신은 교사이고, 학생들은 서로 모순되는 작업을 포함해 여러 가지 일을 부탁한다. 공정해야 하지만 일을 조금 더 쉽게 하고 싶기도 하다. 그래서 일의 일부를 자동화하기로 한다. 첫 번째 작업은 학기 말에 문자 등급을 매기는 것이다.
여러 학생이 수업의 총점을 정수로, 원하는 문자 등급과 함께 이메일로 보내 왔다. 평소라면 이런 부탁은 무시하겠지만, 이 학생들은 마법의 단어 "please"를 썼다. 그래서 이런 부탁 중 일부는 들어줘야겠다고 생각한다.
단순하게 문자 등급은 A, B, C, D, F 다섯 가지이다. 각 등급을 0 이상 100 이하의 어떤 정수 총점으로든 받을 수 있도록 컷오프를 정한다. 그 점수를 받은 학생이 없어도 된다. 또한 다음 조건을 만족해야 한다.
- A를 받을 수 있는 총점은 B를 받을 수 있는 어떤 총점보다 높다.
- B를 받을 수 있는 총점은 C를 받을 수 있는 어떤 총점보다 높다.
- C를 받을 수 있는 총점은 D를 받을 수 있는 어떤 총점보다 높다.
- D를 받을 수 있는 총점은 F를 받을 수 있는 어떤 총점보다 높다.
등급을 요청한 학생은 다른 등급을 받으면, 그것이 더 높은 등급이라도 실망한다. 예를 들어 B를 요청한 학생은 C나 A를 받으면 실망하며, B가 아닌 어떤 등급을 받아도 실망한다.
등급 배정은 다음 우선순위를 따른다.
- "please"를 가장 많이 쓴 학생부터 만족한 학생 수를 최대화한다. 그다음으로 많이 쓴 학생들의 만족 수를 최대화하고, 이후도 같은 방식으로 한다. 가장 많이 쓴 학생들의 만족이 다른 모든 학생의 불만보다 우선이다.
- 위 조건을 만족하는 배정 중에서 A 컷오프를 최대화한다.
- 그다음 B 컷오프를 최대화한다.
- 그다음 C 컷오프를 최대화한다.
- 마지막으로 D 컷오프를 최대화한다.
각 학생이 요청한 등급, 총점, "please"를 쓴 횟수가 주어질 때, 위 규칙에 따른 최적의 컷오프를 구하라.
입력
첫 줄에 정수 ()이 주어진다. 이는 학생 수이다. 이어지는 개의 줄에는 공백 한 칸으로 구분된 세 개의 토큰이 주어진다.
- 정수 ()는 학생의 총점이다.
- 대문자 (A, B, C, D, F 중 하나)은 원하는 문자 등급이다.
- 정수 ()는 학생이 "please"를 쓴 횟수이다.
출력
A, B, C, D의 컷오프를 이 순서대로 한 줄에 출력한다.