結果
問題 | No.43 野球の試合 |
ユーザー | tsuchinaga |
提出日時 | 2019-03-23 05:14:10 |
言語 | Go (1.22.1) |
結果 |
AC
|
実行時間 | 7 ms / 5,000 ms |
コード長 | 1,480 bytes |
コンパイル時間 | 12,889 ms |
コンパイル使用メモリ | 220,184 KB |
実行使用メモリ | 7,296 KB |
最終ジャッジ日時 | 2024-09-19 19:52:45 |
合計ジャッジ時間 | 12,265 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,376 KB |
testcase_02 | AC | 1 ms
5,376 KB |
testcase_03 | AC | 1 ms
5,376 KB |
testcase_04 | AC | 1 ms
5,376 KB |
testcase_05 | AC | 2 ms
5,376 KB |
testcase_06 | AC | 1 ms
5,376 KB |
testcase_07 | AC | 7 ms
7,296 KB |
testcase_08 | AC | 1 ms
5,376 KB |
testcase_09 | AC | 1 ms
5,376 KB |
testcase_10 | AC | 1 ms
5,376 KB |
ソースコード
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) if len(p) == 0 { // 未確定パターンがない場合、ここで順位を確定させて終わる rank := 0 for i := n - 1; i >= 0; i-- { for t, v := range w { if i == v { rank++ if t == 0 { fmt.Println(rank) return } } } } } 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) }