JOI 2020 一次予選 第一回

JOI 2020 一次予選 第一回 C - 共通要素

この問題でGoではN, Mは使わないのですがn, mに代入しておきます。
for文でint ai, biを用いてスライスaとbにappendしていきます。
aとbのどちらでもいいのですが、どちらかをソートします。
そして、for文を二つ使ってスライスaのcnta番目とbのcntb番目が等しいかつcのa[cnta]番目が0ならばaのcnta番目を出力してbreakします。
しかし、aとbに共通の整数が2組あった場合に2回カウントされてしまいます。
そこで今回はaとbが100以下なので長さ100のスライスcをすべて0で初期化してcの一度数えた数字番目を1にします。
そうすることで、毎回プリントする前に確認するので重複がなくなります。

Sample Code

package main

import (
  "fmt"
  "sort"
)

func main() {
  var n, m int
  fmt.Scan(&n, &m)
  var a = []int{}
  var b = []int{}
  var c = [105]int{0}
  for i:=0; i < n; i++ {
    var ai int
    fmt.Scan(&ai)
    a = append(a, ai)
  }
  for j:=0; j < m; j++ {
    var bi int
    fmt.Scan(&bi)
    b = append(b, bi)
  }
  sort.Sort(sort.IntSlice(a))
  for cnta:=0; cnta < n; cnta++ {
      for cntb:=0; cntb < m; cntb++ {
          if a[cnta] == b[cntb] && c[a[cnta]] == 0{
        fmt.Println(a[cnta])
        break
          }
      }
    c[a[cnta]] = 1
  }
}