【PAST#01】D - 重複検査
問題概要¶
考え方¶
整数列 A を 1 から N まで走査して書き換えがなければ Correct
書き換えがあれば書き換わった文字を探索。
AC
package main
import (
"bufio"
"fmt"
"os"
)
var r = bufio.NewReader(os.Stdin)
var N int
var A []int
func main() {
N = ni()
A = nis(N)
fmt.Println(solve())
}
func solve() string {
MAP := make([]bool, N)
x, y := -1, -1
for _, e := range A {
if !MAP[e-1] {
MAP[e-1] = true
} else {
x = e
}
}
if x == -1 {
return "Correct"
}
for i, e := range MAP {
if !e {
y = i + 1
break
}
}
return fmt.Sprintf("%d %d", x, y)
}
func ni() int { var n int; fmt.Fscan(r, &n); return n }
func nis(size int) []int {
var n int
res := make([]int, size)
for i := range res {
fmt.Fscan(r, &n)
res[i] = n
}
return res
}