로봇 프로젝트

면접 대비

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

요약
목표 길이와 최대 백만 개의 막대 길이가 주어질 때, 합이 정확히 목표와 같은 두 막대를 찾아 길이 차이가 최대가 되는 쌍을 구하거나 불가능하면 danger를 출력합니다.
난이도

보통10점 중 4점

유형
투 포인터, 정렬, 배열
정답자
아직 제출이 없습니다

문제

상근이와 선영이는 학교 숙제로 로봇을 만들고 있다. 만들던 도중, 로봇에 뚫린 구멍을 막을 레고 조각 두 개가 필요하다는 것을 알게 되었다.

구멍의 너비는 xx 센티미터이고, 구멍에 끼울 두 조각의 길이의 합은 구멍의 너비와 정확히 같아야 한다. 조금이라도 어긋나면 시연 도중 로봇이 부서지고 두 사람은 F 학점을 받는다. 구멍은 반드시 두 조각으로 막아야 한다.

두 사람은 물리 실험실에 있는 레고 조각의 길이를 모두 정확하게 재어 두었다. 구멍을 완벽하게 막을 수 있는 두 조각을 찾는 프로그램을 작성하라.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 입력의 끝까지 처리한다.

각 테스트 케이스의 첫째 줄에는 구멍의 너비 xx (1≤x≤201 \le x \le 20, xx는 정수)가 센티미터 단위로 주어진다.

둘째 줄에는 레고 조각의 개수 nn (0≤n≤10000000 \le n \le 1000000)이 주어진다.

이어지는 nn개의 줄에는 각 레고 조각의 길이 ℓ\ell이 한 줄에 하나씩 주어진다. ℓ\ell은 양의 정수이고 단위는 나노미터이며, 한 조각의 길이는 1010 센티미터(100000000100000000 나노미터)를 넘지 않는다.

(11 센티미터는 1000000010000000 나노미터이다.)

출력

각 테스트 케이스마다 한 줄씩 출력한다. 구멍을 완벽하게 막을 수 있는 두 조각이 없으면 danger를 출력한다. 막을 수 있으면 yes ℓ1 ℓ2를 출력하며, 이때 ℓ1≤ℓ2\ell_1 \le \ell_2이다.

두 조각을 고르는 방법이 여러 가지이면 ∣ℓ1−ℓ2∣|\ell_1 - \ell_2|가 가장 큰 것을 출력한다.

예제7

  1. 예제 1

    입력
    1
    4
    9999998
    1
    2
    9999999
    
    예상 출력
    yes 1 9999999
    
  2. 예제 2

    입력
    1
    3
    5000000
    3000000
    1
    
    예상 출력
    danger
    
  3. 예제 3

    입력
    5
    0
    
    예상 출력
    danger
    
  4. 예제 4

    입력
    2
    3
    15000000
    5000000
    7000000
    
    예상 출력
    yes 5000000 15000000
    
  5. 예제 5

    입력
    2
    2
    10000000
    10000000
    
    예상 출력
    yes 10000000 10000000
    
  6. 예제 6

    입력
    2
    2
    10000000
    3000000
    
    예상 출력
    danger
    
  7. 예제 7

    입력
    1
    6
    1
    9999999
    2
    9999998
    4000000
    6000000
    
    예상 출력
    yes 1 9999999