ABC142 C - Go to School

備忘録

問題

atcoder.jp

回答

"use strict"
function Main(input) {
  input = input.trim().split('\n');
  const N = Number(input[0].trim());
  const A = input[1].trim().split(' ').map(Number);
 
  let ret = [];
  for(let i=0; i<N; i++){
    let tmp = A[i] - 1;
    ret[tmp] = i + 1; 
  }
 
  console.log(ret.join(' '));
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

考え方

配列Aindex + 1が出席番号、Aiが登校順となっている。
たとえば、

8
8 2 7 3 4 5 6 1

のようなinputの場合、配列A[8, 2, 7, 3, 4, 5, 6, 1,]となり、 index0の場合、A[0]で登校順は8番目となる。
注意する点は配列のindex0始まりのため、
単純にindex = 出席番号とすると間違える。

ちなみに、最後の回答でスプレッド演算子(console.log(...ret);)を使用するとREになった。
Submission #10217483 - AtCoder Beginner Contest 142

REとなった時のケース名を見るとlargemaxとファイル名についているため、
あまりに数の多い配列でスプレッド演算子を使用するとエラーになるっぽい?