시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
8 초 (추가 시간 없음) | 1024 MB | 2 | 2 | 2 | 100.000% |
1 以上 N 以下の相異なる整数からなる,長さ N の整数列 P = (p1, p2, ..., pN) がある.あなたは,この整数列の連続する部分列を選び,回転という操作を行うことができる.より厳密には,あなたは,次の二種類の操作を,任意の順序で任意の回数行うことができる.
いずれの操作についても,一回あたり,選んだ連続部分列の長さすなわち e-b+1 だけのコストがかかる.
あなたは,これらの操作を用いて,整数列 P の要素を昇順に並べ替えたい.すなわち,任意の 1 ≤ i ≤ N に対し pi = i を満たすようにしたい.このために必要なコストの総和の最小値を求めよ.
入力は 50 個以下のデータセットからなる. 各データセットは次の形式で表される.
N p1 p2 … pN
1 行目には,整数列の長さ N (2 ≤ N ≤ 105) が与えられる.2 行目には,整数列 P の各要素 pi (1 ≤ pi ≤ N) が,空白区切りで与えられる.i ≠ j ならば pi ≠ pj であることが保証される.
入力の終わりは 1 つのゼロからなる行で表される.
各データセットに対し,あなたが整数列 P を昇順に並べ替えるために必要なコストの総和の最小値を,1 行に出力せよ.
3 2 3 1 5 1 2 3 4 5 8 1 2 4 5 3 7 6 8 0
3 0 5