結果
問題 | No.1242 高橋君とすごろく |
ユーザー |
![]() |
提出日時 | 2020-12-03 23:13:11 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 2,315 bytes |
コンパイル時間 | 11,328 ms |
コンパイル使用メモリ | 227,064 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-14 08:33:54 |
合計ジャッジ時間 | 12,314 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 24 |
ソースコード
package mainimport ("bufio""fmt""os""sort""strconv")var sc = bufio.NewScanner(os.Stdin)var wr = bufio.NewWriter(os.Stdout)func out(x ...interface{}) {fmt.Fprintln(wr, x...)}func getI() int {sc.Scan()i, e := strconv.Atoi(sc.Text())if e != nil {panic(e)}return i}func getF() float64 {sc.Scan()i, e := strconv.ParseFloat(sc.Text(), 64)if e != nil {panic(e)}return i}func getInts(N int) []int {ret := make([]int, N)for i := 0; i < N; i++ {ret[i] = getI()}return ret}func getS() string {sc.Scan()return sc.Text()}// min, max, asub, absなど基本関数func max(a, b int) int {if a > b {return a}return b}func min(a, b int) int {if a < b {return a}return b}func asub(a, b int) int {if a > b {return a - b}return b - a}func abs(a int) int {if a >= 0 {return a}return -a}func lowerBound(a []int, x int) int {idx := sort.Search(len(a), func(i int) bool {return a[i] >= x})return idx}func upperBound(a []int, x int) int {idx := sort.Search(len(a), func(i int) bool {return a[i] > x})return idx}var m map[int]boolvar N, K intfunc check(a []int) []int {n := len(a)pat := [][2]int{{1, 6}, {2, 5}, {3, 4}}for i := n - 1; i >= 0; i-- {for k := 0; k < 3; k++ {x := i + pat[k][0]y := i + pat[k][1]if x >= n || y >= n {continue}if a[x] == 1 && a[y] == 1 {a[i] = 1}}}return a}func main() {defer wr.Flush()sc.Split(bufio.ScanWords)sc.Buffer([]byte{}, 1000000)// this template is new version.// use getI(), getS(), getInts(), getF()N, K = getI(), getI()a := getInts(K)m = make(map[int]bool)for i := 0; i < K; i++ {m[a[i]] = true}ng := falseif a[K-1] >= 100 {for i := 0; i < K; i++ {for p := 1; p <= 6; p++ {if a[i] < 50 {continue}start := a[i] - pif m[start] {continue}if start <= 0 {continue}pos0 := a[i]pos1 := start + 7 - pif m[pos0] && m[pos1] {ng = true}// out(a[i], p, "start", start, "to", pos0, pos1)}}}if ng {out("No")return}x := make([]int, 100)for i := 0; i < K; i++ {if a[i] < 100 {x[a[i]] = 1}}check(x)if x[1] == 0 {out("Yes")} else {out("No")}}