paiza Cランクレベルアップメニュー「ソート PHP編」FINAL問題

なかなかの難しさ。
array_multisort 関数というのを初めて使いました。

<?php
    // 自分の得意な言語で
    // Let's チャレンジ!!
    
    /*1 行目には人々の数を表す整数 N が与えられ、 
    2 行目から (N + 1) 行目には、
    人々が持っている金の量 g_i と銀の量 s_i がそれぞれ半角スペース区切りで N 行与えられます (1 ≤ i ≤ N)。
    */

    $num = trim(fgets(STDIN));
    
    for ($i = 0; $i < $num; $i++) {
        $s = explode(" ", trim(fgets(STDIN)));
        
        $people[] = array("gold"=>$s[0],"silver"=>$s[1]);
        
    }
    //print_r($people);
    
    // 列方向の配列を得る
    foreach ($people as $key => $row) {
        $gold[$key] = $row['gold'];
        $silver[$key] = $row['silver'];
    }
    
    // データを silver の降順、gold の降順にソートする。
    // $people を最後のパラメータとして渡し、同じキーでソートする。
    array_multisort($silver, SORT_DESC, $gold, SORT_DESC, $people);

    //print_r($people);
    
    //出力
    for ($i = 0; $i < $num; $i++) {
        echo($people[$i]["gold"]." ".$people[$i]["silver"]."\n");
    }


?>

array_multisort 関数の参考元

http://yantona.jugem.jp/?eid=334

paiza Cランクレベルアップメニュー php編

https://paiza.jp/works/mondai/c_rank_level_up_problems/problem_index?language_uid=php
1+