QOJ.ac

QOJ

時間限制: 1.0 s 記憶體限制: 512 MB 總分: 100 可 Hack ✓

#17774. 연감 정리

统计

차회 행사가 막바지에 다다랐을 때, 10주년 기념 특별 회고 세션의 일환으로 소 T는 지난 THUPC 대회의 소중한 기록물인 10년간의 대회 연감들을 꺼내어 모두가 열람할 수 있도록 했습니다.

열람을 마친 후, 두 사람은 연감을 다시 책장에 꽂아두려 합니다. 세월이 흐르면서 연감들의 파손 정도는 제각각이 되었습니다. 섬세한 성격의 소 S는 연감을 다시 꽂을 때 파손 정도가 왼쪽에서 오른쪽으로 엄격히 증가하도록 재배열하여 시간의 흐름을 직관적으로 보여주자고 제안했습니다. 하지만 연감의 종이는 매우 약해져 있어서, 한 번에 한 권씩 아주 조심스럽게 앞으로 한 칸씩만 옮길 수 있으며, 이 과정에서 해당 연감의 파손도는 필연적으로 1 증가하게 됩니다. 더 큰 문제는 정리할 시간이 매우 부족하다는 점입니다. 소 S는 제한된 횟수 내에 이 연감들을 다시 책장에 꽂고 질서 정연하게 정리할 수 있을지 궁금해합니다.

책장에는 $n$권의 연감이 놓여 있습니다. 처음에 $i$ ($1 \le i \le n$)번째 연감의 파손도는 $a_i$입니다.

매 이동 시, 먼저 위치 $p$ ($1 \le p \le n - 1$)를 선택한 다음, $p+1$번째 연감을 $p$번째 연감 앞으로 이동시킵니다. 이동 후 해당 연감의 파손도는 1 증가합니다.

시간이 제한되어 있으므로, 총 $n^2 - n$번 이하의 이동만 수행할 수 있습니다. 연감을 열람하는 참가자 중 한 명으로서, 당신은 소 S가 최종적으로 책장의 연감 파손도가 왼쪽에서 오른쪽으로 엄격히 증가하도록 만드는 구체적인 이동 계획을 세우는 것을 도와야 합니다.

입력

각 테스트 케이스는 여러 개의 테스트 데이터로 구성됩니다. 입력의 첫 번째 줄에는 데이터의 개수를 나타내는 정수 $T$ ($1 \le T \le 10$)가 주어집니다. 각 테스트 데이터에 대하여:

  • 첫 번째 줄에는 연감의 개수를 나타내는 정수 $n$ ($2 \le n \le 500$)이 주어집니다.
  • 두 번째 줄에는 각 연감의 초기 파손도를 나타내는 $n$개의 정수 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 10^9$)이 주어집니다.

출력

각 테스트 데이터에 대하여, 가능한 이동 계획이 존재한다면:

  • 첫 번째 줄에 이동 횟수를 나타내는 비음의 정수 $k$ ($0 \le k \le n^2 - n$)를 출력합니다.
  • 두 번째 줄에 매 이동 시 선택한 위치 $p_1, p_2, \dots, p_k$ ($1 \le p_i \le n - 1$)를 출력합니다.

최종적으로 책장의 연감 파손도를 왼쪽에서 오른쪽으로 엄격히 증가하게 만들 수 없는 경우, -1을 출력합니다.

예제

입력 1

3
3
2 1 2
2
2 1
3
4 5 1

출력 1

0

-1
2
2 1

참고

첫 번째 테스트 데이터의 경우, 처음에 책장의 연감 파손도가 이미 왼쪽에서 오른쪽으로 엄격히 증가하고 있습니다.

두 번째 테스트 데이터의 경우, $n^2 - n$번 이하의 이동으로 최종 책장의 연감 파손도를 왼쪽에서 오른쪽으로 엄격히 증가하게 만드는 것은 불가능함이 증명될 수 있습니다.

세 번째 테스트 데이터의 경우, 가능한 이동 계획 중 하나는 다음과 같습니다:

  • 첫 번째 이동에서 위치 2를 선택하면, 모든 연감의 파손도는 $[4, 2, 5]$가 됩니다.
  • 두 번째 이동에서 위치 1을 선택하면, 모든 연감의 파손도는 $[3, 4, 5]$가 됩니다.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.