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

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

주가

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

요약
각 테스트 케이스에서 가장 낮은 k1개 가격과 가장 높은 k2개 가격이 나타난 날짜를 각각 오름차순과 내림차순으로 출력한다. 동점일 때의 규칙도 지켜야 한다.
난이도

보통10점 중 5점

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

문제

싸게 사서 비싸게 판다. 주식 시장에서 이익을 내려면 이렇게 해야 한다(여기서 공매도는 고려하지 않는다). 물론 미래의 주가는 아무도 알 수 없으므로, 언제 사고팔아야 하는지, 반복 매매로 얼마나 이익을 낼 수 있는지 정확히 알기는 어렵다.

하지만 지난 nn일 동안의 주가 기록이 주어진다면, 낼 수 있었던 최대 이익은 분명히 계산할 수 있다. 이 문제에서는 대신, 가장 낮은 k1k_1개의 가격과 가장 높은 k2k_2개의 가격이 나타난 날을 찾는 데 관심이 있다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 케이스의 첫 줄에는 세 정수 nn, k1k_1, k2k_2가 주어진다 (1≤n≤1061 \le n \le 10^6, k1+k2≤nk_1 + k_2 \le n, 1≤k1,k2≤1001 \le k_1, k_2 \le 100).

다음 줄에는 nn개의 음이 아닌 정수가 주어지며, 그중 ii번째 정수(1≤i≤n1 \le i \le n)는 ii일째의 주가이다.

입력의 끝은 n=k1=k2=0n = k_1 = k_2 = 0인 줄로 표시되며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 세 줄을 출력한다.

  • 첫 줄에는 케이스 번호를 Case x 형식으로 출력한다(xx는 1부터 시작한다).
  • 둘째 줄에는 가장 낮은 k1k_1개의 가격이 나타난 날들을 오름차순으로 출력한다.
  • 셋째 줄에는 가장 높은 k2k_2개의 가격이 나타난 날들을 내림차순으로 출력한다.

한 줄 안의 값들은 공백 하나로 구분한다. 같은 가격을 가진 날이 여러 개여서 답이 여러 가지일 수 있는 경우, 가장 낮은 가격의 목록은 사전순으로 가장 작은 것을, 가장 높은 가격의 목록은 사전순으로 가장 큰 것을 출력한다.

예제5

  1. 예제 1

    입력
    10 3 2
    1 2 3 4 5 6 7 8 9 10
    10 3 2
    10 9 8 7 6 5 4 3 2 1
    0 0 0
    
    예상 출력
    Case 1
    1 2 3
    10 9
    Case 2
    8 9 10
    2 1
    
  2. 예제 2

    입력
    5 2 2
    5 5 5 5 5
    0 0 0
    
    예상 출력
    Case 1
    1 2
    5 4
    
  3. 예제 3

    입력
    5 2 2
    3 3 1 3 3
    0 0 0
    
    예상 출력
    Case 1
    1 3
    5 4
    
  4. 예제 4

    입력
    4 1 1
    0 7 2 7
    0 0 0
    
    예상 출력
    Case 1
    1
    4
    
  5. 예제 5

    입력
    4 2 2
    4 1 3 2
    0 0 0
    
    예상 출력
    Case 1
    2 4
    3 1