#791
集合写真
서브테스크
시간 제한
4s
메모리 제한
512MB
제출
0
정답
0
맞힌 사람
0
정답 비율
0.0%
문제
とある合宿の最終日,合宿の参加者 人で集合写真を撮ることとなった.参加者には身長の低い順に から までの番号が付けられている.参加者 の身長は である().
集合写真は,階段の上に並んで撮影する.この階段はちょうど 段からなり,低い方から順に から までの番号が付けられている.段 は段 よりもちょうど だけ高い().階段の幅はとても狭いため,それぞれの段に参加者が 人ずつ立って,縦一列に並んで撮影する.
間もなく撮影が行われようとしており,それぞれの段に参加者が立っている.現在,段 ()に立っている参加者は,参加者 である.
ところが,あまりにも参加者の身長が違いすぎるため,この並び順では写真に写らない参加者がいるかもしれない.そこで,あなたは参加者の位置を並べ替えて,少なくとも全員の頭の上部が写るようにしたい.すなわち,次の条件が満たされるようにしたい.
- 段 ()に立っている参加者の身長を とする.このとき,すべての ()に対し, が成り立つ.
ただし,あなたは隣り合う参加者の位置を入れ替えることしかできない.すなわち, 回の操作において,段 ()を任意に一つ選び,段 の参加者と段 の参加者を入れ替えることができる.
この操作をできるだけ少ない回数行うことで,条件が満たされるようにしたい.
現在の参加者の並び順が与えられたとき,必要な操作回数の最小値を求めるプログラムを作成せよ.
입력
入力は以下の形式で標準入力から与えられる.入力される値はすべて整数である.
N
H_1 \ldots H_N
출력
必要な操作回数の最小値を,標準出力に 行で出力せよ.
예제 입력 1
5
3 5 2 4 1
예제 출력 1
3
以下のように操作を 回行うことで,条件を満たすようにできる.
- まず,段 の参加者と段 の参加者を入れ替える.参加者の身長は前から順に となる.
- 次に,段 の参加者と段 の参加者を入れ替える.参加者の身長は前から順に となる.
- 最後に,段 の参加者と段 の参加者を入れ替える.参加者の身長は前から順に となり,条件を満たす.
回以下の操作で条件を満たす状態にすることはできないので, を出力する.
예제 입력 2
5
3 2 1 5 4
예제 출력 2
0
すでに条件を満たしているので,操作を行う必要はない.
예제 입력 3
9
6 1 3 4 9 5 7 8 2
예제 출력 3
9
제한
- .
- ().
- ().
서브태스크
- ( 점) .
- ( 점) .
- ( 점) .
- ( 점) .
- ( 점) 追加の制約はない.
코드 제출
코드를 제출하려면 로그인이 필요합니다.
로그인내 제출
제출 내역이 없습니다.
맞은 사람
아직 맞은 사람이 없습니다.
난이도 투표
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
제출 내역이 없습니다.