trang chủ / bài tập / cycshift

Xoay vòng sắp xếp

Đề bài

Mô tả

Cho một mảng a gồm n số nguyên.

Trong một thao tác, bạn chọn một chỉ số i (1in2) rồi xoay vòng đoạn [ai,ai+1,ai+2] sang phải một bước, tức là thay đoạn [ai,ai+1,ai+2] bằng [ai+2,ai,ai+1].

Nhiệm vụ của bạn là sắp xếp mảng a theo thứ tự không giảm bằng không quá n2 thao tác, hoặc chỉ ra rằng điều đó là không thể.

Bạn phải trả lời t bộ dữ liệu độc lập.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên t (1t100) là số bộ dữ liệu.
  • Với mỗi bộ dữ liệu:
    • Dòng đầu chứa số nguyên n (3n500) là độ dài mảng.
    • Dòng thứ hai chứa n số nguyên a1,a2,,an (1ai500).

Tổng của n trên tất cả các bộ dữ liệu không vượt quá 500.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra:

  • 1 trên một dòng nếu không thể sắp xếp mảng bằng các thao tác đã mô tả; hoặc
  • Số thao tác ans trên dòng đầu, sau đó là ans số nguyên idx1,idx2,,idxans (1idxjn2), trong đó idxj là chỉ số biên trái của đoạn cho thao tác thứ j. Các chỉ số được in theo đúng thứ tự thực hiện.

Nếu có nhiều đáp án hợp lệ, in ra một đáp án bất kỳ dùng không quá n2 thao tác.

Ràng buộc

  • 1t100
  • 3n500
  • 1ai500
  • Tổng n không vượt quá 500.

Ví dụ

Input Output Giải thích
2
5
5 4 3 2 1
3
2 1 3
6
3 1 3 2 2 3
-1
Bộ 1: sáu thao tác đưa [5,4,3,2,1] về [1,2,3,4,5]. Bộ 2: mảng [2,1,3] có các phần tử đôi một khác nhau và cần một số lẻ phép đổi chỗ để sắp xếp, nên không thể (đáp án 1).
1
6
1 2 3 3 6 4
2
4 3
Thực hiện thao tác tại idx=4 rồi idx=3 đưa [1,2,3,3,6,4] về [1,2,3,3,4,6]. Vì có giá trị lặp lại nên luôn sắp xếp được.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0