Skip to content

【PAST#01】D - 重複検査

問題概要

D - 重複検査

考え方

整数列 A1 から 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
}

submission