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

Cộng và trừ

Đề bài

Mô tả

Cho một xâu s chỉ gồm các ký tự +-. Ta thực hiện quá trình sau:

res = 0
for init = 0, 1, 2, ...:
    cur = init
    ok = true
    for i = 1 to |s|:
        res = res + 1
        if s[i] == '+': cur = cur + 1
        else:           cur = cur - 1
        if cur < 0:
            ok = false
            break
    if ok: break
output res

Nói cách khác, ta thử lần lượt các giá trị khởi tạo init=0,1,2,. Với mỗi init, ta duyệt xâu s từ trái sang phải, cộng/trừ vào biến cur theo từng ký tự. Mỗi bước duyệt (dù thành công hay không) đều làm res tăng 1. Nếu trong quá trình duyệt cur trở nên âm thì dừng ngay vòng trong và thử init lớn hơn; nếu duyệt hết xâu mà cur không bao giờ âm thì kết thúc.

Hãy tính giá trị cuối cùng của res.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t — số bộ dữ liệu.
  • Mỗi bộ dữ liệu là một dòng chứa xâu s chỉ gồm các ký tự +-.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra trên một dòng giá trị res cuối cùng.

Ràng buộc

  • 1t1000
  • 1|s|106
  • Tổng |s| trên tất cả các bộ dữ liệu không vượt quá 106.

Ví dụ

Input Output Giải thích
3
--+-
---
++--+-
7
9
6
Bộ 1 (--+-): với init=0 dừng sau bước 1 (res=1); init=1 dừng sau bước 2 (res=3); init=2 duyệt hết 4 bước (res=7). Bộ 3 (++--+-): init=0 đã đủ vì cur không bao giờ âm, res=6.
15
-
--
+
+-
-
+
-
+
-
-+
-+
-+
-+
-+
-+
2
5
1
2
2
1
2
1
2
3
3
3
3
3
3
Mỗi xâu được xử lý độc lập. Với xâu -- cần init=2, các lần thử lần lượt mất 1,2,2 bước, tổng 5.

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