// 最小値のkey を取り出す関数 $minKey = array_keys($arr, min($arr))[0]; // 最大値のkey を取り出す関数 $maxKey = array_keys($arr, max($arr))[0]; // 最小値を先頭に持っていった後の配列を作る関数。先頭は、末尾に回る。 array_merge(array_slice($arr, $minKey), array_slice($arr, 0, $minKey)); // 最小値を配列から取り除く array_splice($arr, $minKey, 1); $carsNum = intval(trim(fgets(STDIN))); // 車の台数が、1 の場合、0 を出力して、終了。 if($carsNum === 1) { echo 0; die(); } $count = 0; // 最後に公道に出る教習車が公道に出るまで教習所内のコースを回った回数 $carsOrder = []; for ($i = 0; $i < $carsNum; $i++) { $carsOrder[] = trim(fgets(STDIN)); } for ($i = 0; $i < $carsNum; $i++) { $minKey = array_keys($carsOrder, min($carsOrder))[0]; $maxKey = array_keys($carsOrder, max($carsOrder))[0]; if($minKey > $maxKey) { $count++; } array_splice($carsOrder, $minKey, 1); $carsOrder = array_merge(array_slice($carsOrder, $minKey), array_slice($carsOrder, 0, $minKey)); } echo $count;