IOI 선발
시간 제한1초메모리 제한1024 MB
참가자마다 네 경시대회 원점수와 학년이 주어질 때, 대회별로 점수를 정규화하고 파이널과 가장 좋은 KATT 두 개를 합산해 IOI와 BOI 대표를 선발한다.
문제
프로그래밍 올림피아드 운영진은 눈밭에서 놀고 싶다. 안타깝게도 운영진에게는 놀기보다 우선하는 무수한 의무가 있다. 문제를 출제하고, 대회를 감독하고, 인솔자로 따라가고, 올해 성적을 바탕으로 국가대표로 선발될 참가자를 계산해야 한다.
그런데 운영진은 마지막 부분은 다른 누군가가 처리해도 된다는 생각이 들었다. 예를 들어 당신 말이다.
국가대표 선발 규칙은 다음과 같다. 선발의 근거가 되는 대회는 모두 네 개이며, 결승전과 세 번의 KATT 대회(KATT1, KATT2, KATT3)이다.
모든 대회가 끝나면 성적을 합산하여, 가장 좋은 점수를 받은 네 명의 참가자가 International Olympiad in Informatics, IOI에 선발된다. IOI 외에도 Baltic Olympiad in Informatics, BOI에 나갈 팀을 뽑아야 한다. 이 팀은 IOI 팀과, 3학년이 아니면서 IOI에 선발되지 않은 참가자 중 가장 좋은 두 명으로 구성된다.
성적을 합산할 때는 세 번의 KATT 대회에서 가장 좋은 두 성적과 결승전 성적을 골라 더한다.
한 대회 안에서 성적은 참가자가 받은 점수를 정규화하여 계산한다. 먼저 모든 참가자 중 최고 점수 와 모든 참가자의 중앙값 를 구한다. 참가자가 점을 받았다면 그 참가자의 성적은 이다. 참가자가 점을 받았다면 그 참가자의 성적은 이다. 따라서 점수가 0에서 까지 오를 때 성적은 0에서 50까지 선형으로 증가하고, 에서 까지 오를 때는 50에서 100까지 증가한다.
대회의 각 참가자에 대해 네 대회에서의 성적과 학년이 주어진다. 누가 IOI와 BOI에 선발되는지 판정하라.
입력
첫째 줄에는 정수 , 즉 참가자의 수가 주어진다.
다음 개 줄은 한 참가자와 그 참가자의 성적을 나타낸다. 한 줄은 참가자의 이름으로 시작하며, 이름은 부터 까지의 소문자 최대 20자로 이루어지고 공백은 없다. 그다음에는 중 하나인 수가 오며, 참가자의 학년을 나타낸다. 여기서 학년 는 중학생을 나타낸다. 마지막으로 네 개의 정수 이 오며, 각각 결승전, KATT1, KATT2, KATT3에서의 점수이다.
한 대회에서 중앙값과 최고 점수는 항상 서로 다르다. 위 규칙에 따른 팀은 항상 정확히 하나 존재한다.
출력
첫째 줄에는 IOI에 선발된 네 참가자의 이름을 출력한다.
다음 줄에는 BOI에 선발된 추가 참가자 두 명의 이름을 출력한다.
각 줄에서 이름은 사전순으로 정렬되어야 한다.