結果
問題 | No.43 野球の試合 |
ユーザー |
![]() |
提出日時 | 2019-03-23 05:08:39 |
言語 | Go (1.23.4) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,201 bytes |
コンパイル時間 | 11,985 ms |
コンパイル使用メモリ | 222,240 KB |
実行使用メモリ | 7,948 KB |
最終ジャッジ日時 | 2024-09-19 19:42:44 |
合計ジャッジ時間 | 12,771 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 WA * 1 |
other | AC * 6 WA * 1 |
ソースコード
package main import ( "fmt" "math" ) func main() { var n int _, _ = fmt.Scan(&n) w := make([]int, n) // 勝ち数 type unset struct { a, b int } u := make([]unset, 0) // 未確定 for i := range w { s := "" _, _ = fmt.Scan(&s) for j, c := range []rune(s) { if c == 'o' { w[i]++ } else if c == '-' && i < j { u = append(u, unset{i, j}) } } } // fmt.Println(w) // fmt.Println(u) // 勝ちの組み合わせを作る p := make([][]int, 0) for _, v := range u { if len(p) == 0 { p = append(p, []int{v.a}) p = append(p, []int{v.b}) continue } tmp := make([][]int, 0) for _, q := range p { tmp = append(tmp, append(q, v.a)) tmp = append(tmp, append(q, v.b)) } p = tmp } // fmt.Println(p) min := math.MaxInt64 for _, q := range p { ww := make([]int, len(w)) copy(ww, w) for _, i := range q { ww[i]++ } rank := 0 for i := n - 1; i >= 0; i-- { end := false for t, v := range ww { if i == v { rank++ if t == 0 { if min > rank { min = rank } end = true } break } } if end { // fmt.Println(ww, rank, min) break } } } fmt.Println(min) }