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

Ngọc trai trên hàng

Đề bài

Mô tả

n viên ngọc trai xếp thành một hàng, đánh số từ 1 đến n từ trái sang phải. Viên ngọc thứ i có loại ai.

Một đoạn là một dãy các viên ngọc liên tiếp. Một đoạn được gọi là tốt nếu trong đoạn đó có ít nhất hai viên ngọc cùng loại.

Hãy chia hàng ngọc trai thành số lượng đoạn tốt nhiều nhất có thể. Mỗi viên ngọc phải thuộc đúng một đoạn của cách chia.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: số viên ngọc trai.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an: loại của từng viên ngọc.

Dữ liệu ra

  • Nếu không tồn tại cách chia hợp lệ, in ra một số 1.
  • Ngược lại, dòng đầu in số nguyên k: số đoạn nhiều nhất. Mỗi dòng trong k dòng tiếp theo in hai số nguyên lj,rj (1ljrjn): chỉ số viên ngọc trái nhất và phải nhất của đoạn thứ j.

Cách chia phải hợp lệ: mỗi viên ngọc thuộc đúng một đoạn và mọi đoạn đều là đoạn tốt. Nếu có nhiều đáp án tối ưu, in ra một đáp án bất kỳ. Các đoạn có thể được in theo thứ tự bất kỳ.

Ràng buộc

  • 1n3·105
  • 1ai109

Ví dụ

Input Output Giải thích
5
1 2 3 4 1
1
1 5
Chỉ có một đoạn tốt duy nhất là toàn bộ hàng (hai viên loại 1 ở hai đầu).
7
1 2 1 3 1 2 1
2
1 3
4 7
Đoạn [1,3] có hai viên loại 1; đoạn [4,7] có hai viên loại 1. Không thể chia thành nhiều hơn 2 đoạn tốt.
5
1 2 3 4 5
-1 Mọi viên đều khác loại nên không có đoạn tốt nào.

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