trang chủ / đề bài / dhbb23_chv_10_b

Xâu con đối xứng

Đề bài

Mô tả

Cho xâu S gồm N chữ cái in thường và Q truy vấn. Mỗi truy vấn gồm 2 số nguyên l,r. Với mỗi truy vấn, bạn cần sắp xếp lại các kí tự của xâu trong khoảng từ vị trí l đến vị trí r sao cho sau khi sắp xếp, xâu con từ l đến r là một xâu palindrome có thứ tự từ điển nhỏ nhất có thể; nếu không sắp xếp được thành xâu palindrome thì bỏ qua truy vấn đó (xâu giữ nguyên). Các truy vấn được thực hiện lần lượt theo thứ tự, mỗi truy vấn áp dụng lên xâu đã thay đổi bởi các truy vấn trước. Xâu palindrome là xâu khi đọc từ trái qua phải cũng giống như đọc từ phải qua trái.

Yêu cầu: In ra xâu S sau Q truy vấn.

Lưu ý: vị trí các kí tự trong xâu S được đánh số từ 1 đến N.

Dữ liệu vào

  • Dòng đầu tiên gồm 2 số nguyên N và Q (1≤N,Q≤20000).
  • Dòng thứ hai gồm N kí tự biểu diễn xâu S.
  • Q dòng tiếp theo, mỗi dòng gồm 2 số nguyên l,r biểu diễn một truy vấn (1≤l≤r≤N).

Dữ liệu ra

In ra xâu S sau Q truy vấn.

Ràng buộc

  • 1≤N,Q≤20000.
  • S chỉ gồm chữ cái tiếng Anh in thường.
  • 1≤l≤r≤N.

Subtasks

  • Subtask 1 (30% số điểm): N,Q≤103.
  • Subtask 2 (30% số điểm): xâu S chỉ gồm kí tự a và b.
  • Subtask 3 (40% số điểm): N,Q≤20000.

Mỗi subtask được chấm theo nhóm: chỉ được điểm của subtask khi đúng mọi test thuộc subtask đó.

Ví dụ

Input Output Giải thích
7 2
aabcbaa
1 3
5 7
abacaba Sau truy vấn thứ nhất, xâu S trở thành abacbaa; sau truy vấn thứ hai, xâu S trở thành abacaba.
3 2
abc
1 2
2 3
abc Cả hai truy vấn đều không thể thực hiện (ab và bc không sắp xếp được thành palindrome) nên xâu S không thay đổi.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0