Chọn ĐTQG Đại học Vinh 2026 - Cân bằng xâu

Xem dạng PDF

Gửi bài giải

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

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

Cho một xâu ký tự ~S~ chỉ gồm hai ký tự 'a''b', có độ dài ~N~. Bạn được phép thực hiện thao tác: Chọn hai ký tự kề nhau trong xâu rồi đổi chỗ chúng. Mỗi lần đổi chỗ có chi phí bằng ~1~.

Một xâu được gọi là cân bằng nếu thỏa mãn đồng thời hai điều kiện:

  1. Số lượng ký tự 'a' bằng số lượng ký tự 'b';

  2. Với mọi tiền tố của xâu, số lượng ký tự 'a' không nhỏ hơn số lượng ký tự 'b'.

Nói cách khác, xét từ trái sang phải, nếu mỗi ký tự 'a' được xem là một bước tiến lên ~(+1)~, mỗi ký tự 'b' là một bước lùi ~(-1)~, thì một xâu cân bằng phải thỏa mãn:

  • Tổng giá trị của toàn xâu bằng ~0~;

  • Tổng giá trị của mọi tiền tố của xâu đều không âm.

Yêu cầu: Hãy tìm số phép đổi chỗ kề nhau ít nhất cần thực hiện để biến ~S~ thành một xâu cân bằng. Nếu không thể biến đổi thành xâu cân bằng, in ra ~-1~.

Input

  • Dòng ~1~: Chứa số nguyên dương ~N~ là độ dài của xâu ~S~ ~(N \le 10^5)~;

  • Dòng ~2~: Chứa xâu ký tự ~S~ gồm đúng ~N~ ký tự, mỗi ký tự chỉ là 'a' hoặc 'b'.

Output

Ghi ra một số nguyên duy nhất là số phép đổi chỗ kề nhau ít nhất tìm được (hoặc ~-1~ nếu không thể biến đổi thành xâu cân bằng).

Scoring

Subtask Điểm Ràng buộc
1 ~30\%~ ~N \le 12~
2 ~30\%~ ~N \le 2000~
3 ~40\%~ ~N \le 10^5~

Sample Input 1

6
aababb

Sample Output 1

0

Sample Input 2

8
bbaaabab

Sample Output 2

3

Sample Input 3

5
aabab

Sample Output 3

-1

Notes

Test 1: Xâu aababb đã thỏa mãn tính cân bằng nên số phép đổi chỗ bằng ~0~.

Test 2: Ta thực hiện ít nhất ~3~ phép đổi chỗ kề nhau để được xâu cân bằng: bbaaabab ~\rightarrow~ babaabab ~\rightarrow~ abbaabab ~\rightarrow~ abababab.

Test 3: Không tồn tại phương án biến đổi xâu aabab thành xâu cân bằng.


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.