Lost Civilization

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

요약
트리의 각 도시에서 가장 가까운 외곽 도시까지의 거리가 A_i 이상이 되도록 N개 도시를 잇는 트리가 존재하는지 판별하고, 존재하면 그러한 도로 N-1개를 아무거나 출력한다.
난이도

보통10점 중 7점

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

문제

당신은 잃어버린 문명에 대해 연구하는 고고학자이다. 당신이 연구하고 있는 문명은 다음과 같은 특징을 갖는다.

  • 문명은 NN개의 도시로 이루어져 있고, 각각의 도시에는 11번부터 NN번까지 번호가 붙어 있다.
  • 문명에는 총 N−1N-1개의 양방향 도로가 있다. 각각의 도로는 서로 다른 두 도시를 잇는다.
  • 임의의 두 도시를 고르더라도 둘 사이를 하나 이상의 도로를 통해 왕복할 수 있다.

즉, 잃어버린 문명은 트리 구조를 이루고 있다.

문명에서의 외곽 도시는 연결된 도로의 수가 정확히 하나인 도시로 정의된다. 또한, 도시의 안정성은 그 도시에서부터 가장 가까운 외곽 도시까지의 거리로 정의된다. 이때, 두 도시 사이의 거리는 한 도시에서 다른 도시로 이동하기 위해 지나야 하는 도로 개수의 최솟값으로 정의된다. 정의에 의해, 모든 외곽 도시의 안정성은 00이다.

당신은 이 문명에 대한 새로운 가설을 세웠다. 이는 어떤 배열 \[A_1,A_2,⋯ ,A_N]\[A\_1, A\_2, \cdots, A\_N]에 대하여, 모든 1≤i≤N1 \le i \le N에 대해 ii번 도시의 안전성은 A_iA\_i 이상이라는 것이다.

NN과 \[A_1,A_2,⋯ ,A_N]\[A\_1, A\_2, \cdots, A\_N]이 주어졌을 때, 가설을 만족하는 문명이 있는지 판별하고, 만약 존재한다면 조건을 만족하는 아무 문명을 출력하라.

입력

첫 번째 줄에 문명을 이루는 도시의 수를 나타내는 정수 NN이 주어진다.

두 번째 줄에는 정수 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots, A\_N이 순서대로 공백으로 구분되어 주어진다.

출력

만약 주어진 가설을 만족하는 문명이 존재한다면, N−1N-1줄에 걸쳐 문명을 구성하는 도로에 대한 정보를 출력해야 한다.

ii번째 줄에는 두 정수 a_ia\_i와 b_ib\_i를 공백을 사이에 두고 출력해야 하는데, 이는 문명에 a_ia\_i번 도시와 b_ib\_i번 도시를 연결하는 도로가 있음을 의미한다.

만약 주어진 가설을 만족하는 문명이 존재하지 않을 경우, 첫 줄에 −1-1을 출력해야 한다.

제한

  • 3≤N≤100,0003 \le N \le 100\\,000
  • 모든 1≤i≤N1 \le i \le N에 대하여 0≤A_i≤N0 \le A\_i \le N

예제3

  1. 예제 1

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

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

    입력
    4
    1 2 3 4
    
    예상 출력
    -1