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

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

홍준이의 행렬

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

요약
길이 N인 두 수열 A와 B가 주어질 때, N^2개의 곱 A_i * B_j 중 K번째로 작은 값을 찾는다.
난이도

보통10점 중 7점

유형
이분 탐색, 정렬, 수학, 투 포인터
정답자
아직 제출이 없습니다

문제

홍준이에게 길이가 NN인 수열 AA와 BB가 있다. 홍준이는 이 두 수열로 N×NN \times N 행렬을 만들었다. 행렬의 ii행 jj열 원소는 Ai×BjA_i \times B_j이다.

홍준이는 행렬의 원소 N2N^2개를 모두 오름차순으로 정렬한 다음, 앞에서 KK번째에 오는 값이 무엇인지 알고 싶다. 순서는 1번부터 세고, 같은 값이 여러 번 나오면 나온 횟수만큼 따로 센다. 정렬이 느린 홍준이를 대신해 KK번째 값을 구하는 프로그램을 작성하라.

입력

첫째 줄에 NN과 KK가 공백을 사이에 두고 주어진다. (1≤N≤300001 \le N \le 30000, 1≤K≤N21 \le K \le N^2)

둘째 줄에 수열 AA의 원소 NN개가 공백을 사이에 두고 주어진다.

셋째 줄에 수열 BB의 원소 NN개가 공백을 사이에 두고 주어진다.

두 수열의 원소는 모두 11 이상 10910^9 이하의 자연수이다.

출력

첫째 줄에 정렬한 원소 중 KK번째로 작은 값을 출력한다.

예제2

  1. 예제 1

    입력
    2 3
    2 3
    3 5
    
    예상 출력
    10
    
  2. 예제 2

    입력
    3 5
    2 2 2
    3 3 3
    
    예상 출력
    6