Sắp xếp mảng bằng một lần đảo đoạn

Đề bài

Mô tả

Cho một mảng a gồm n số nguyên đôi một phân biệt.

Hãy xác định xem có thể sắp xếp mảng a theo thứ tự tăng dần bằng cách đảo ngược đúng một đoạn con hay không.

Đảo ngược đoạn [l,r] nghĩa là thay dãy al,al+1,,ar bằng dãy ar,ar1,,al (các phần tử còn lại giữ nguyên).

Lưu ý: bạn phải đảo ngược đúng một đoạn. Nếu mảng đã được sắp xếp sẵn, bạn vẫn có thể chọn một đoạn chỉ gồm một phần tử (ví dụ [1,1]) — việc đảo ngược đoạn đó không làm thay đổi mảng.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — kích thước mảng.
  • Dòng thứ hai chứa n số nguyên phân biệt a1,a2,,an.

Dữ liệu ra

In ra yes hoặc no tùy theo câu trả lời.

Nếu câu trả lời là yes, in thêm một dòng chứa hai số nguyên lr (lr) là chỉ số đầu và cuối của đoạn cần đảo ngược. Nếu có nhiều cách chọn, in ra bất kỳ cách nào.

Ràng buộc

  • 1n105
  • 1ai109
  • Các phần tử ai đôi một phân biệt.

Ví dụ

Input Output Giải thích
3
3 2 1
yes
1 3
Đảo ngược toàn bộ mảng được 1 2 3 đã sắp xếp.
4
2 1 3 4
yes
1 2
Đảo ngược đoạn [1, 2] được 1 2 3 4.
4
3 1 2 4
no Không có đoạn nào đảo ngược để mảng được sắp xếp.
2
1 2
yes
1 1
Mảng đã sắp xếp, đảo một đoạn một phần tử là hợp lệ.

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 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