[Vĩnh Phúc - 23] Lật ký tự
Cho xâu S gồm N ký tự '.' và '#' được đánh số từ 1 đến N. Thao tác lật ký tự của xâu được định nghĩa như sau:
- Chọn số nguyên i (1 <= i <= N).
- Nếu ký tự thứ i của xâu S là '.' thì nó sẽ được thay thế bằng '#'. Ngược lại, nếu là '#' thì sẽ được thay thế bằng '.'.
Hãy lập trình tính xem cần thực hiện ít nhất bao nhiêu thao tác để trong xâu không có ký tự '.' nào ở ngay bên phải ký tự '#'.
(Điều này đồng nghĩa với việc xâu sau khi biến đổi phải có dạng: một loạt dấu '.' rồi đến một loạt dấu '#', ví dụ: ...###)
Dữ liệu: Vào từ file PCHAR.INP
- Dòng 1: ghi số nguyên N (1 <= N <= 200.000) là số lượng ký tự trong xâu S.
- Dòng 2: ghi xâu S gồm N ký tự '.' và '#'.
Subtasks:
- Subtask 1 (50% số điểm): 1 <= N <= 2.000
- Subtask 2 (50% số điểm): Không có ràng buộc bổ sung (N <= 200.000).
Kết quả: Ghi ra file PCHAR.OUT
Một số nguyên duy nhất là số thao tác ít nhất cần thực hiện.
Ví dụ:
PCHAR.INP 3 #.# PCHAR.OUT 1
Giải thích: Lật ký tự '#' đầu tiên để xâu trở thành "..#"
PCHAR.INP 5 #.##. PCHAR.OUT 2
Giải thích: Lật hai ký tự '.' để trở thành "#####"
Comments