#P16796. [NWRRC 2025]Asynchronous Processor

[NWRRC 2025]Asynchronous Processor

题目描述

给定一个由 nn 条指令组成的程序。程序在一个处理器上执行,处理器只有一个整数寄存器 AA,其初始值为 00

每条指令属于以下两种类型之一:

  • + v:执行 A:=A+vA:=A+v
  • = v:执行 A:=vA:=v

这些指令从 11nn 编号。最初,第 ii 条指令的时间戳为 ii

部分指令被标记为异步指令。如果第 ii 条指令是异步指令,那么可以将它的时间戳修改为任意一个严格大于 ii 的实数。

完成所有时间戳调整后,所有指令的时间戳必须互不相同。处理器随后按照时间戳从小到大的顺序执行所有指令。

请计算:通过不同的异步指令时间戳安排,程序执行结束后,寄存器 AA 一共可能得到多少种不同的最终值。

输入格式

第一行包含一个整数 nn,表示程序中的指令数量。

接下来 nn 行,第 ii 行描述第 ii 条指令,包含三个字段:

  • 第一个字段为 +=,表示指令类型;
  • 第二个字段为整数 vv,表示指令参数;
  • 第三个字段为 asyncsync,表示该指令是异步指令还是同步指令。

输出格式

输出一个整数,表示执行完所有指令后,寄存器 AA 可能取得的不同最终值数量。

数据范围

1n2000,1\le n\le 2000, 1v500.1\le v\le 500.

样例 1

3
+ 1 sync
= 2 async
+ 3 async
2

样例 2

10
= 7 async
+ 3 async
+ 5 sync
+ 3 async
= 1 sync
+ 9 async
+ 10 async
+ 1 sync
+ 3 async
+ 4 sync
30

样例说明

在样例 1 中,第 11 条指令首先执行,使 A=1A=1。之后,第 2233 条异步指令可以按以下两种顺序执行:

  • 先执行 = 2,再执行 + 3,最终 A=5A=5
  • 先执行 + 3,再执行 = 2,最终 A=2A=2

因此,最终值共有 22 种:2255