Chuyển động xoắn

Đề bài

Mô tả

Cho dãy số a1,a2,,an gồm n phần tử, mỗi phần tử có giá trị 1 hoặc 2.

Bạn được phép chọn đúng một đoạn [l,r] (1lrn) và đảo ngược các phần tử trong đoạn đó (tức biến al,al+1,,ar thành ar,ar1,,al). Sau khi thực hiện thao tác này, hãy tìm độ dài lớn nhất của một dãy con không giảm của dãy thu được.

Một dãy con không giảm là một dãy chỉ số p1<p2<<pk sao cho ap1ap2apk. Độ dài của dãy con là k.

Bạn phải thực hiện phép đảo (bắt buộc chọn một đoạn, l có thể bằng r).

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — độ dài dãy.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an, mỗi số là 1 hoặc 2.

Dữ liệu ra

In ra một số nguyên duy nhất — độ dài lớn nhất của dãy con không giảm có thể đạt được.

Ràng buộc

  • 1n2000
  • 1ai2

Ví dụ

Input Output Giải thích
4
1 2 1 2
4 Đảo đoạn [2,3] ta được [1,1,2,2], độ dài dãy con không giảm dài nhất là 4.
10
1 1 2 2 2 1 1 2 2 1
9 Đảo đoạn [3,7] ta được [1,1,1,1,2,2,2,2,2,1], độ dài dãy con không giảm dài nhất là 9.

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