Truy vấn của Sonya

Đề bài

Mô tả

Ban đầu bạn có một tập hợp bội (multiset) rỗng chứa các số nguyên không âm. Bạn phải xử lý t truy vấn, mỗi truy vấn thuộc một trong ba loại sau:

  • + a : thêm số nguyên không âm a vào tập hợp. Vì đây là tập hợp bội nên có thể tồn tại nhiều bản sao của cùng một số.
  • - a : xóa một bản sao của số a khỏi tập hợp. Đảm bảo rằng tại thời điểm xóa, trong tập hợp có ít nhất một số a.
  • ? s : với xâu mẫu s chỉ gồm các ký tự 01, đếm số lượng phần tử trong tập hợp (tính cả lặp lại) khớp với mẫu s.

Trong mẫu s, ký tự 0 đại diện cho chữ số chẵn, còn 1 đại diện cho chữ số lẻ. Một số nguyên x khớp với mẫu s nếu tính chẵn lẻ của chữ số thứ i tính từ phải sang của x trùng với ký tự thứ i tính từ phải sang của s, với mọi vị trí.

Nếu mẫu ngắn hơn số thì mẫu được bổ sung thêm các chữ số 0 vào bên trái. Ngược lại, nếu số ngắn hơn mẫu thì biểu diễn thập phân của số được bổ sung thêm các chữ số 0 vào bên trái.

Ví dụ, với mẫu s=010 thì các số 92, 2212, 50414 khớp với mẫu, còn các số 3, 110, 251030 thì không.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t: số truy vấn.
  • t dòng tiếp theo, mỗi dòng mô tả một truy vấn. Dòng bắt đầu bằng ký tự loại truy vấn (+, - hoặc ?), theo sau là một dấu cách rồi tới đối số. Với +-, đối số là số nguyên a (không có số 0 vô nghĩa ở đầu, trừ khi a=0). Với ?, đối số là xâu mẫu gồm các ký tự 01.

Dữ liệu ra

Với mỗi truy vấn loại ?, in ra một dòng chứa số lượng phần tử trong tập hợp khớp với mẫu tại thời điểm đó.

Ràng buộc

  • 1t100000
  • 0a<1018
  • Độ dài mẫu s không vượt quá 18.
  • Có ít nhất một truy vấn loại ?.

Ví dụ

Input Output Giải thích
4
+ 200
+ 200
- 200
? 0
1 Sau ba thao tác đầu, tập hợp còn lại một số 200. Mẫu 0 khớp với các số có chữ số hàng đơn vị chẵn; 200 có chữ số cuối là 0 (chẵn) nên khớp.
12
+ 1
+ 241
? 1
+ 361
- 241
? 0101
+ 101
? 101
- 101
? 101
+ 4000
? 0
2
1
2
1
1
Truy vấn ? 1 khớp với 1241 (đều lẻ ở hàng đơn vị). Truy vấn ? 0101 khớp với 361. Truy vấn ? 101 (lúc này) khớp với 101361, rồi sau khi xóa 101 chỉ còn 361. Truy vấn cuối ? 0 khớp với 4000.

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