【9度OJ 1398】移動回数
タイトルの説明:
JOBDU傘下のJOBBALAは、個性的で親民的なIT会社として知られています.JOBBALAの設立50周年の日には、会社のCEOが社員全員の登山旅行を組織した.いつもの習慣では、ガイドは通常、身長が低い順から高い順に並ぶように観光客に要求していますが、今回のJOBBALAの人数が多すぎることを考えると、ソートに時間がかかります.そこで、ガイドさんは、JOBBALAのスタッフに勝手に並ぶように要求しましたが、キューの1つ目がキューの中で一番低く、キューの最後がキューの中で一番高いことを保証しなければなりません.例えば、キュー{1,4,3,2,2,5}は一致するキューであり、{1,4,2,3,2,5}も一致し、{2,1,2,3,4,5}は間違っている.すみません、任意の列については、最低2、2回交換しなければなりませんが、ガイドの要求に合うようにすることができますか?
入力:
複数のテストケースを入力します.各テストケースは2行です.
最初の行は、人数を表す整数n(2<=n<=200)を含み、次の行は、n個の整数a 1,a 2,......an(1<=ai<=200)を含み、n個の従業員の初期の配列を表す.
出力:
各テストケースに対応して、ガイドの要求に従って、出力は最低2、2交換の回数を必要とします.
サンプル入力:
サンプル出力:
ヒント:
ケース2では、最低3回移動する必要があります:(5588 1 2)->(551 88 2)->(1 5588 2)->(1 552 88)
解:身長に注意すると同時に、小さい移動の最小回数は配列インデックスが小さく、大きい移動回数が少ないのは配列中のインデックスが大きい.
JOBDU傘下のJOBBALAは、個性的で親民的なIT会社として知られています.JOBBALAの設立50周年の日には、会社のCEOが社員全員の登山旅行を組織した.いつもの習慣では、ガイドは通常、身長が低い順から高い順に並ぶように観光客に要求していますが、今回のJOBBALAの人数が多すぎることを考えると、ソートに時間がかかります.そこで、ガイドさんは、JOBBALAのスタッフに勝手に並ぶように要求しましたが、キューの1つ目がキューの中で一番低く、キューの最後がキューの中で一番高いことを保証しなければなりません.例えば、キュー{1,4,3,2,2,5}は一致するキューであり、{1,4,2,3,2,5}も一致し、{2,1,2,3,4,5}は間違っている.すみません、任意の列については、最低2、2回交換しなければなりませんが、ガイドの要求に合うようにすることができますか?
入力:
複数のテストケースを入力します.各テストケースは2行です.
最初の行は、人数を表す整数n(2<=n<=200)を含み、次の行は、n個の整数a 1,a 2,......an(1<=ai<=200)を含み、n個の従業員の初期の配列を表す.
出力:
各テストケースに対応して、ガイドの要求に従って、出力は最低2、2交換の回数を必要とします.
サンプル入力:
2
89 88
4
55 88 1 2
サンプル出力:
1
3
ヒント:
ケース2では、最低3回移動する必要があります:(5588 1 2)->(551 88 2)->(1 5588 2)->(1 552 88)
解:身長に注意すると同時に、小さい移動の最小回数は配列インデックスが小さく、大きい移動回数が少ないのは配列中のインデックスが大きい.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
/**
* 19 52 50
*
* @author aqia358
*
* 20 06 27
*/
public class Main {
public void move(int[] a) {
int minPos = 0;
int maxPos = a.length - 1;
int min = a[minPos];
int max = a[maxPos];
for (int i = 0; i < a.length; i++) {
if (min > a[i]) {
min = a[i];
minPos = i;
}
if (max <= a[i]) {
max = a[i];
maxPos = i;
}
}
if (minPos < maxPos) {
System.out.println(minPos + a.length - 1 - maxPos);
} else {
System.out.println(minPos + a.length - 1 - maxPos - 1);
}
}
public static void main(String[] args) throws IOException {
Main m = new Main();
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
while(st.nextToken() != StreamTokenizer.TT_EOF){
int n = (int)st.nval;
int[] array = new int[n];
for(int i = 0; i < n; i++){
st.nextToken();
array[i] = (int) st.nval;
}
m.move(array);
}
}
}