#aBC321F. [ABC321F] #(subset sum = K) with Add and Erase

[ABC321F] #(subset sum = K) with Add and Erase

AT_abc321_f [ABC321F] #(subset sum = K) with Add and Erase

题目描述

有一个箱子。最初,箱子是空的。
对这个箱子,总共要按输入给定的顺序进行 22 种操作共 QQ 次。

+ xx

类型 11:向箱子中加入一个写有整数 xx 的球。

- xx

类型 22:从箱子中取出一个写有整数 xx 的球。
保证在取出前,箱子中一定存在一个写有整数 xx 的球。

对于每次操作后,请解决以下问题:

从箱子中取出若干个球,使得这些球上写的整数之和恰好为 KK,共有多少种取法?请输出对 998244353998244353 取模的结果。
注意,箱子中的所有球都是可区分的。

输入格式

输入通过标准输入给出。
其中,Queryi\rm{Query}_i 表示第 ii 次操作。

QQ KK Query1\rm{Query}_1 Query2\rm{Query}_2 \vdots QueryQ\rm{Query}_Q

输出格式

共输出 QQ 行。
ii 行输出进行到第 ii 次操作后时的答案。

输入输出样例 #1

输入 #1

15 10
+ 5
+ 2
+ 3
- 2
+ 5
+ 10
- 3
+ 1
+ 3
+ 3
- 5
+ 1
+ 7
+ 4
- 3

输出 #1

0
0
1
0
1
2
2
2
2
2
1
3
5
8
5

说明/提示

限制条件

  • 输入均为整数。
  • 1Q50001\le Q\le 5000
  • 1K50001\le K\le 5000
  • 对于类型 11 的操作,1x50001\le x\le 5000
  • 所有操作均满足题目中的条件。

样例解释 1

本输入包含 1515 次操作。最后一次操作后,箱子中的球为 (5,10,1,3,1,7,4)(5,10,1,3,1,7,4)。使总和为 1010 的取法有以下 55 种:

  • 5+1+3+15+1+3+1(取第 1,3,4,51,3,4,5 个球)
  • 5+1+45+1+4(取第 1,3,71,3,7 个球)
  • 5+1+45+1+4(取第 1,5,71,5,7 个球)
  • 1010(取第 22 个球)
  • 3+73+7(取第 4,64,6 个球)

由 ChatGPT 4.1 翻译