[Hà Nội - TST - 2024] Bài 1: Dãy số hai phía

Xem dạng PDF

Gửi bài giải

Điểm: 10,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Một dãy số gồm ~M~ phần tử ~a_1, a_2, ..., a_M~ được gọi là dãy số hai phía nếu thoả mãn điều kiện sau:

  • ~M~ chẵn, khi đó chia dãy thành hai phần ~\{a_1, a_2, ..., a_{\frac{M}{2}}\}~ và ~\{a_{\frac{M}{2}+1}, ..., a_M\}~;
  • Các phần tử ở mỗi phần có giá trị bằng nhau. Tức là ~a_1=a_2=...=a_{\frac{M}{2}}~ và ~a_{\frac{M}{2}+1}=...=a_M~;
  • Giá trị của hai phần phải khác nhau. Tức là ~a_1 \neq a_M~.

Ví dụ:

  • Dãy số hai phía: ~\{0, 0, 0, 1, 1, 1\}, \{1, 1, 2, 2\}, \dots~
  • Không phải dãy hai phía: ~\{1, 1, 0\}, \{0, 0, 2, 1\}, \{2, 2\}, \dots~

Cho dãy số gồm ~N~ phần tử, mỗi phần tử nhận một trong ba giá trị ~0, 1, 2~ và số nguyên dương ~K~.

Hãy thay đổi không quá ~K~ phần tử của dãy để được dãy con dài nhất là dãy số hai phía.

INPUT

  • Dòng đầu tiên chứa hai số nguyên ~N, K~ ~(1\le K\le N\le 10^5)~;
  • Dòng tiếp theo chứa ~N~ số ~0~ hoặc ~1~ hoặc ~2~ mô tả dãy số ban đầu.

OUTPUT

Một số nguyên duy nhất là độ dài lớn nhất của dãy số hai phía tìm được, sau khi thay đổi không quá ~K~ số của dãy số đã cho.

SAMPLE INPUT 1

7 3
2 1 2 0 0 2 1

SAMPLE OUTPUT 1

6

Có thể thay đổi thành dãy số: ~\color{red}{2, \underline{2}, 2, 0, 0, \underline{0}}~, ~1~

Hoặc cũng có thể thay đổi thành dãy số: ~\color{red}{\underline{1}, 1, \underline{1}, 0, 0, \underline{0}}~, ~1~

SAMPLE INPUT 2

4 2
1 1 0 0

SAMPLE OUTPUT 2

4

Không cần thay đổi phần tử nào trong dãy số.

SUBTASKS

  • Có ~50\%~ số test ứng với ~50\%~ số điểm thoả mãn: ~1\le K\le N\le 10^2~;
  • ~30\%~ số test khác ứng với ~30\%~ số điểm thoả mãn: ~1\le K\le N\le 10^3~;
  • ~20\%~ số test còn lại ứng với ~20\%~ số điểm không có ràng buộc gì thêm.

Bình luận

Hãy đọc nội quy trước khi bình luận.


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