아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

아이들의 놀이

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

요약
도미노 모양 판을 뒤집거나 놓아 위아래 합이 같게 만들고, 불가능하면 한 장만 버리되 최소 눈이 가장 작은 판을 고른다.
난이도

보통10점 중 5점

유형
동적 계획법, 그리디, 정렬, 구현
정답자
아직 제출이 없습니다

문제

작은 섬 투쿠투(Tookutoo)의 주민들은 수학을 무척 좋아하여 아이들에게 여러 가지 수학 놀이를 가르친다. 투쿠투에서 인기 있는 퍼즐 하나는 아래 그림과 같은 도자기 판(슬래브)으로 즐긴다.

각 슬래브는 도미노처럼 두 칸으로 나뉘어 있고, 각 칸에는 정수 하나가 새겨져 있다. 위 그림의 세 슬래브는 각각 [2, 1], [6, 3], [3, 1]의 값을 가진다. 슬래브 [a, b]는 뒤집을 수 있으므로 [b, a]로도 쓸 수 있다.

플레이어는 크고 다양한 더미에서 무작위로 뽑은 슬래브 한 벌을 받는다. 이 슬래브들을 탁자 위에 나란히 놓되, 윗줄 숫자의 합과 아랫줄 숫자의 합이 같아지도록 배치해야 한다. 위 그림의 슬래브들에 대한 올바른 배치의 한 예는 다음과 같다.

1 6 1
2 3 3

이때 윗줄과 아랫줄의 합은 모두 88이다.

모든 슬래브를 사용해서는 조건을 만족하는 배치를 만들 수 없다면, 플레이어는 슬래브를 정확히 하나만 버릴 수 있다. 단, 이때 만들어지는 (양쪽이 같은) 합은 가능한 한 커야 한다. 같은 최대 합을 남기면서 버릴 수 있는 슬래브가 여러 개라면, a≤ba \le b로 쓴 슬래브 [a, b] 중에서 aa가 가장 작은 것을 버려야 한다.

주어진 슬래브들에 대해, 필요할 때만 슬래브 하나를 버리며 올바른 배치의 (양쪽이 같은) 합을 구하는 프로그램을 작성하라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 슬래브의 개수를 나타내는 정수 NN이 주어진다 (0≤N≤4000 \le N \le 400). 이어지는 NN개의 줄에는 각각 슬래브 하나를 나타내는 두 정수 XiX_i와 YiY_i가 주어진다 (0≤Xi≤10000 \le X_i \le 1000, 0≤Yi≤10000 \le Y_i \le 1000). N=0N = 0인 줄은 입력의 끝을 나타내며, 테스트 케이스가 아니다.

출력

각 테스트 케이스마다 한 줄을 출력한다. 슬래브를 하나 버리더라도 올바른 배치를 만들 수 없다면 impossible을 출력한다. 그렇지 않으면 (양쪽이 같은) 합을 출력한 뒤 버린 슬래브를 설명한다. 슬래브를 하나 버려야 했다면 X≤YX \le Y 형식으로 discard X Y를 출력하고, 모든 슬래브를 사용했다면 discard none을 출력한다.

예제2

  1. 예제 1

    입력
    4
    1 4
    2 9
    2 1
    0 4
    2
    8 1
    9 4
    3
    6 3
    1 2
    3 1
    0
    
    예상 출력
    10 discard 1 2
    impossible
    8 discard none
    
  2. 예제 2

    입력
    3
    2 1
    6 3
    3 1
    0
    
    예상 출력
    8 discard none