CF1540D.Inverse Inversions

NOI/NOI+/CTSC

通过率:0%

时间限制:5.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You were playing with permutation pp of length nn, but you lost it in Blair, Alabama!

Luckily, you remember some information about the permutation. More specifically, you remember an array bb of length nn, where bib_i is the number of indices jj such that j<ij \lt i and pj>pip_j \gt p_i.

You have the array bb, and you want to find the permutation pp. However, your memory isn't perfect, and you constantly change the values of bb as you learn more. For the next qq seconds, one of the following things happen:

  1. 11 ii xx — you realize that bib_i is equal to xx;
  2. 22 ii — you need to find the value of pip_i. If there's more than one answer, print any. It can be proven that there's always at least one possible answer under the constraints of the problem.

Answer the queries, so you can remember the array!

你曾玩过一个长度为 nn 的排列 pp,但在阿拉巴马州的布莱尔(Blair)把它弄丢了!

幸运的是,你还记得该排列的一些信息。具体来说,你记得一个长度为 nn 的数组 bb,其中 bib_i 表示满足 j<ij \lt i 且 pj>pip_j \gt p_i 的下标 jj 的个数。

现在你手上有数组 bb,并希望还原出排列 pp。然而,你的记忆并不完美,随着你不断了解更多信息,数组 bb 的值也会持续更新。接下来的 qq 秒内,将依次发生以下两种事件之一:

  1. 1 i x —— 你意识到 bib_i 实际上等于 xx;
  2. 2 i —— 你需要求出 pip_i 的值。若存在多个可能答案,输出任意一个即可。可以证明:在本题约束条件下,始终至少存在一个合法解。

请回答所有查询,以便你重新记起这个排列!

输入格式

The first line contains a single integer nn (1≤n≤1051 \leq n \leq 10^5) — the size of permutation.

The second line contains nn integers b1,b2…,bnb_1, b_2 \ldots, b_n (0≤bi<i0 \leq b_i \lt i) — your initial memory of the array bb.

The third line contains a single integer qq (1≤q≤1051 \leq q \leq 10^5) — the number of queries.

The next qq lines contain the queries, each with one of the following formats:

  • 11 ii xx (0≤x<i≤n0 \leq x \lt i \leq n), representing a query of type 11.
  • 22 ii (1≤i≤n1 \leq i \leq n), representing a query of type 22.

It is guaranteed that there's at least one query of type 22.

第一行包含一个整数 nn(1≤n≤1051 \leq n \leq 10^5)—— 排列的大小。

第二行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n(0≤bi<i0 \leq b_i < i)—— 你对数组 bb 的初始记忆。

第三行包含一个整数 qq(1≤q≤1051 \leq q \leq 10^5)—— 查询的数量。

接下来的 qq 行为查询,每行格式为以下之一:

  • 11 ii xx(0≤x<i≤n0 \leq x < i \leq n),表示类型 11 的查询;
  • 22 ii(1≤i≤n1 \leq i \leq n),表示类型 22 的查询。

保证至少存在一个类型 22 的查询。

输出格式

For each query of type 22, print one integer — the answer to the query.

对于每个类型为 22 的查询,输出一个整数——该查询的答案。

输入输出样例

  • 输入#1

    3
    0 0 0
    7
    2 1
    2 2
    2 3
    1 2 1
    2 1
    2 2
    2 3

    输出#1

    1
    2
    3
    2
    1
    3
  • 输入#2

    5
    0 1 2 3 4
    15
    2 1
    2 2
    1 2 1
    2 2
    2 3
    2 5
    1 3 0
    1 4 0
    2 3
    2 4
    2 5
    1 4 1
    2 3
    2 4
    2 5

    输出#2

    5
    4
    4
    3
    1
    4
    5
    1
    5
    4
    1

说明/提示

For the first sample, there's initially only one possible permutation that satisfies the constraints: [1,2,3][1, 2, 3], as it must have 00 inversions.

After the query of type 11, the array bb is [0,1,0][0, 1, 0]. The only permutation pp that produces this array is [2,1,3][2, 1, 3]. With this permutation, b2b_2 is equal to 11 as p1>p2p_1 \gt p_2.

对于第一个样例,初始时仅存在一个满足约束条件的排列:[1,2,3][1, 2, 3],因为它必须恰好有 00 个逆序对。

在执行类型为 11 的查询后,数组 bb 变为 [0,1,0][0, 1, 0]。唯一能生成该数组 bb 的排列 pp 是 [2,1,3][2, 1, 3]。在此排列下,b2=1b_2 = 1,因为 p1>p2p_1 > p_2。

输入解题思路,AI测评打分。不知道怎么写?

首页