만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

함께 춤추자

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

요약
수직선 위의 소년 n명과 소녀 n명을 짝지어, 서로 현재 파트너보다 더 가깝게 있는 쌍이 없도록 하는 문제입니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

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

문제

랄프는 오락실 기계를 살펴보다가 아마 지금까지 나온 것 중 가장 지루한 게임을 찾아냈다. 게임 이름은 "함께 춤추자"이다. 목표는 주어진 소년들과 소녀들을 춤 짝으로 묶는 것이다.

편의상 소년은 11부터 nn까지, 소녀도 11부터 nn까지 번호가 매겨져 있다. 모든 아이는 수직선 위에 놓여 있는데, ii번째 소년은 좌표 bib_i에, jj번째 소녀는 좌표 gjg_j에 있다. 게임이 그다지 현실적이지 않아서 여러 아이가 같은 점에 서 있을 수도 있다.

아이들의 선호는 꽤 단순하다. ii번째 소년과 jj번째 소녀 사이의 호감도는 두 사람 사이 거리 ∣bi−gj∣|b_i - g_j|의 역수로 정한다. 즉 가까이 있을수록 서로를 더 좋아한다. 한 소년이 여러 소녀에게 똑같이 호감을 느낄 수 있고, 반대도 가능하다.

플레이어는 nn개의 짝을 만들어야 한다. 각 짝은 소년 한 명과 소녀 한 명으로 이루어지며, 모든 아이는 정확히 한 짝에만 속해야 한다.

그러나 아무렇게나 짝을 지으면 되는 것은 아니다. 소년 AA가 소녀 aa와 짝이고, 소년 BB가 소녀 bb와 짝이라고 하자. AA와 bb의 호감도가 AA와 aa의 호감도보다 크고, 동시에 BB와 bb의 호감도보다도 크면, 소년 AA와 소녀 bb 사이에 "유혹"이 생긴다. 즉 소년과 소녀가 각자의 짝보다 서로를 더 좋아하면 유혹이 생긴다.

목표는 유혹이 생기지 않도록 모든 소년과 소녀를 짝짓는 것이다. 랄프는 이번 단계를 도저히 깨지 못하고 있어서, 이 게임에서 이기는 프로그램을 작성하거나 이기는 것이 불가능하다고 판정하는 프로그램을 짜 달라고 부탁했다.

입력

첫 줄에 소년과 소녀의 수 nn이 주어진다 (1≤n≤1051 \le n \le 10^5).

둘째 줄에는 소년들의 좌표 bib_i가 nn개 주어진다 (1≤bi≤1091 \le b_i \le 10^9).

셋째 줄에는 소녀들의 좌표 gig_i가 nn개 주어진다 (1≤gi≤1091 \le g_i \le 10^9).

출력

유혹이 생기지 않도록 아이들을 짝지을 수 없으면 −1-1을 한 줄에 출력한다.

그렇지 않으면 nn개의 줄을 출력한다. 각 줄에는 한 짝을 이루는 소년의 번호와 소녀의 번호를 차례로 적는다. 조건을 만족하는 짝짓기가 여러 가지라면 그중 아무거나 출력하면 된다.

예제1

  1. 예제 1

    입력
    3
    6 12 18
    3 9 16
    
    예상 출력
    3 3
    1 2
    2 1