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 n beavers, each of them has a unique id from 1 to n . Consider a permutation a1,a2,...,an of n these beavers. Beavershave 5000 needs one session to shave beavers with ids from x to y (inclusive) if and only if there are such indices i1<i2<...<ik , that ai1=x , ai2=x+1 , ..., aik−1=y−1 , aik=y . And that is really convenient. For example, it needs one session to shave a permutation of beavers 1,2,3,...,n .
If we can't shave beavers from x to y in one session, then we can split these beavers into groups [x,p1] , [p1+1,p2] , ..., [pm+1,y] (x<=p1<p2<...<pm<y) , in such a way that the machine can shave beavers in each group in one session. But then Beavershave 5000 needs m+1 working sessions to shave beavers from x to y .
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 x to y , inclusive?
- two beavers on positions x and y (the beavers ax and ay ) swapped.
You can assume that any beaver can be shaved any number of times.
输入格式
The first line contains integer n — the total number of beavers, 2<=n . The second line contains n space-separated integers — the initial beaver permutation.
The third line contains integer q — the number of queries, 1<=q<=105 . The next q lines contain the queries. Each query i looks as pi xi yi , where pi is the query type ( 1 is to shave beavers from xi to yi , inclusive, 2 is to swap beavers on positions xi and yi ). All queries meet the condition: 1<=xi<yi<=n .
- to get 30 points, you need to solve the problem with constraints: n<=100 (subproblem B1);
- to get 100 points, you need to solve the problem with constraints: n<=3⋅105 (subproblems B1+B2).
Note that the number of queries q is limited 1<=q<=105 in both subproblem B1 and subproblem B2.
输出格式
For each query with pi=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