CF331B2.Shave Beaver!

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

The Smart Beaver has recently designed and built an innovative nanotechnologic all-purpose beaver mass shaving machine, "Beavershave 5000". Beavershave 5000 can shave beavers by families! How does it work? Very easily!

There are nn beavers, each of them has a unique id from 1 to nn . Consider a permutation a1,a2,...,ana_{1},a_{2},...,a_{n} of nn these beavers. Beavershave 5000 needs one session to shave beavers with ids from xx to yy (inclusive) if and only if there are such indices i1<i2<...<iki_{1}<i_{2}<...<i_{k} , that ai1=xa_{i1}=x , ai2=x+1a_{i2}=x+1 , ..., aik1=y1a_{ik-1}=y-1 , aik=ya_{ik}=y . And that is really convenient. For example, it needs one session to shave a permutation of beavers 1,2,3,...,n1,2,3,...,n .

If we can't shave beavers from xx to yy in one session, then we can split these beavers into groups [x,p1][x,p_{1}] , [p1+1,p2][p_{1}+1,p_{2}] , ..., [pm+1,y][p_{m}+1,y] (x<=p1<p2<...<pm<y)(x<=p_{1}<p_{2}<...<p_{m}<y) , in such a way that the machine can shave beavers in each group in one session. But then Beavershave 5000 needs m+1m+1 working sessions to shave beavers from xx to yy .

All beavers are restless and they keep trying to swap. So if we consider the problem more formally, we can consider queries of two types:

  • what is the minimum number of sessions that Beavershave 5000 needs to shave beavers with ids from xx to yy , inclusive?
  • two beavers on positions xx and yy (the beavers axa_{x} and aya_{y} ) swapped.

You can assume that any beaver can be shaved any number of times.

输入格式

The first line contains integer nn — the total number of beavers, 2<=n2<=n . The second line contains nn space-separated integers — the initial beaver permutation.

The third line contains integer qq — the number of queries, 1<=q<=1051<=q<=10^{5} . The next qq lines contain the queries. Each query ii looks as pip_{i} xix_{i} yiy_{i} , where pip_{i} is the query type ( 11 is to shave beavers from xix_{i} to yiy_{i} , inclusive, 22 is to swap beavers on positions xix_{i} and yiy_{i} ). All queries meet the condition: 1<=xi<yi<=n1<=x_{i}<y_{i}<=n .

  • to get 30 points, you need to solve the problem with constraints: n<=100n<=100 (subproblem B1);
  • to get 100 points, you need to solve the problem with constraints: n<=3105n<=3·10^{5} (subproblems B1+B2).

Note that the number of queries qq is limited 1<=q<=1051<=q<=10^{5} in both subproblem B1 and subproblem B2.

输出格式

For each query with pi=1p_{i}=1 , print the minimum number of Beavershave 5000 sessions.

输入输出样例

  • 输入#1

    5
    1 3 4 2 5
    6
    1 1 5
    1 3 4
    2 2 3
    1 1 5
    2 1 5
    1 1 5
    

    输出#1

    2
    1
    3
    5
    
首页