#P13864. [SWERC 2020] Figurines

[SWERC 2020] Figurines

背景

:::align{center} :::

题目描述

Bob 有很多迷你手办。他喜欢在电脑屏幕上方的一个架子上展示其中的一些,并且喜欢定期更换展示的手办。这种不断变化的装饰确实令人赏心悦目。Bob 从不重复添加同一个迷你手办。Bob 只有 NN 个迷你手办,经过 NN 天后,每个手办都被添加过然后又被移除了(因此架子又空了)。

Bob 记忆力非常好。他能记住过去每一天架子上展示了哪些迷你手办。因此,Bob 想做一个小小的脑力练习,来测试自己的记忆力和计算能力。为此,Bob 用数字 0,…,N−10, \dots, N-1 为他的手办编号,并选择一个长度为 NN 的整数序列 d0…dN−1d_0 \dots d_{N-1},所有整数均在范围 [0,N][0,N] 内。然后,Bob 按如下方式计算序列 x0,…,xNx_0,\dots, x_N:x0=0x_0=0,xi+1=(xi+yi) mod Nx_{i+1}=(x_i+y_i) \bmod N,其中  mod \bmod 是取模运算,yiy_i 是在第 did_i 天展示的手办中,编号大于或等于 xix_i 的手办个数。Bob 的计算结果就是 xNx_N。

更形式化地说,如果我们用 S(i)S(i) 表示第 ii 天架子上展示的手办对应的 {0,…,N−1}\{0,\dots,N-1\} 的子集,则有:

  • S(0)S(0) 是空集;
  • S(i)S(i) 是由 S(i−1)S(i-1) 插入和移除一些元素得到的。
  • 每个元素 0≤j<N0 \le j < N 恰好被插入和移除一次,因此,最后一个集合 S(N)S(N) 也是空集。

Bob 利用如下程序进行计算。

$$\begin{array}{l} x_0 \leftarrow 0 \\ \text{for } i \in [0;N-1] \\ \;\;\;\;\;\;\; x_{i+1} \leftarrow (x_i + \#\{y \in S(d_i) ~\text{ 满足 } ~ y \ge x_i\}) \bmod N \\ \text{output } x_N \end{array}$$

Bob 请你验证他的计算。为此,他将他在计算中使用的数字(d0,…,dN−1d_0, \dots, d_{N-1})以及他每天添加或移除了哪些手办的日志交给你。注意,一个在第 ii 天添加、第 jj 天移除的迷你手办,在满足 i≤k<ji\leq k < j 的第 kk 天是存在于架子上的。你应该告诉他你在计算结束时得到的数字。

输入格式

输入由 2N+12N+1 行组成。

  • 第一行包含整数 NN。
  • 第 22 到第 N+1N+1 行描述了每天添加和移除的手办。 第 i+1i+1 行包含空格分隔的 +j+j 或 −j-j,其中 0≤j<N0 \le j < N,表示 jj 在第 ii 天被添加或移除。这一行可能为空。一行中可能同时包含 +j+j 和 −j-j,按此顺序出现。
  • 第 N+2N+2 到第 2N+12N+1 行描述了序列 d0,…,dN−1d_0,\dots, d_{N-1}。 第 N+2+iN+2+i 行包含整数 did_i,满足 0≤di≤N0 \le d_i \le N。

输出格式

输出应包含一行一个整数,即 xNx_N。

3
+0 +2
-0 +1
-1 -2
1
2
2
2

提示

输入 #1

3
+0 +2
-0 +1
-1 -2
1
2
2

输出 #1

2

样例解释:
输出为 22,因为

  • 首先,x←2x \leftarrow 2,因为 S(1)={0,2}S(1) = \{ 0, 2 \} 且 #{y∈S(1) 满足 y≥0}=2\#\{y \in S(1) ~\text{满足}~ y \ge 0\} = 2;
  • 然后,x←0x \leftarrow 0,因为 S(2)={1,2}S(2) = \{ 1, 2 \} 且 #{y∈S(2) 满足 y≥2}=1\#\{y \in S(2) ~\text{满足}~ y \ge 2\} = 1;
  • 最后,x←2x \leftarrow 2,因为 S(2)={1,2}S(2) = \{ 1, 2 \} 且 #{y∈S(2) 满足 y≥0}=2\#\{y \in S(2) ~\text{满足}~ y \ge 0\} = 2。

对于所有数据,保证 N≤105N\le 10^5。