【问题描述】
Mirko有1个家庭图书馆,一共有N本书,编号为1..N,从左到右排成一排,但是编号是混乱的。现在Mirko打算把这些书从左至右按编号递增次序排列,他可以采用两种方式:
操作1、每次操作可以交换任意两本书位置。比如,现在有三本书,从左到右分别为3,2,1.则Mirko只需要1次操作就可以让书排好序。把编号为3的书和编号为1的书交换。
操作2、每次操作抽出一本书,该书的左边所有书向右移动,然后把这本书放置在最左边。比如,现在有三本书,从左到右分别为3,2,1,则Mirko只需要2次操作就可以让书排好序。他先将2抽出放到最左面,再将1抽出放到最左面。
现在请你计算,只用一种操作,要完成排序,分别的最少操作次数。
【输入格式】
第1行包含一个整数N(N<=300000)
接下来N行,每一行包含1个正整数。这N个正整数表示开始时,书堆中从上到下书的编号,每个整数只出现1次。
【输出格式】
第1行,只进行操作1需要的最少操作次数
第2行,只进行操作2需要的最少操作次数
【输入样例】
3
3 2 1
【输出样例】
1 2
【数据范围】
N<=300000
这道题主要就是要模拟过程,第一问直接模拟就好。
第二问可以直接从后面开始找。
详见代码:
#i