👋
AtCoder Beginner Contest 392 (3)
C問題
ゼッケンiを付けている人の見ている人のつけているゼッケンの番号を出力する問題でした。頭の体操としてちょうどよいと思いました。
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
var n int
fmt.Scan(&n)
reader := bufio.NewReaderSize(os.Stdin, 1<<20)
line, _ := reader.ReadString('\n')
line = strings.TrimSpace(line)
s := strings.Split(line, " ")
p := make(map[int]int, n+1)
for i := 1; i <= n; i++ {
si, _ := strconv.Atoi(s[i-1])
p[i] = si
}
line, _ = reader.ReadString('\n')
line = strings.TrimSpace(line)
s = strings.Split(line, " ")
q := make(map[int]int, n+1)
qp := make(map[int]int, n+1)
for i := 1; i <= n; i++ {
si, _ := strconv.Atoi(s[i-1])
q[i] = si
qp[si] = i
}
for i := 1; i <= n; i++ {
if i == 1 {
fmt.Print(q[p[qp[i]]])
} else {
fmt.Print(" ")
fmt.Print(q[p[qp[i]]])
}
}
}
Discussion