結果
| 問題 |
No.43 野球の試合
|
| コンテスト | |
| ユーザー |
tsuchinaga
|
| 提出日時 | 2019-03-23 04:04:48 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,103 bytes |
| コンパイル時間 | 12,112 ms |
| コンパイル使用メモリ | 240,828 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-19 18:26:41 |
| 合計ジャッジ時間 | 12,495 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 6 WA * 1 |
ソースコード
package main
import "fmt"
func main() {
var n int
_, _ = fmt.Scan(&n)
w := make([]int, n) // 勝ち数
d := make([][]int, n) // 引き分け相手
z := 0 // 未確定数
// fmt.Println("--- 入力取り込み ---")
for i := range w {
s := ""
_, _ = fmt.Scan(&s)
for j, c := range []rune(s) {
if c == 'o' || (c == '-' && i == 0) {
w[i]++
} else if c == '-' && j != 0 {
d[i] = append(d[i], j)
z++
}
}
}
// fmt.Println(w)
// fmt.Println(z, d)
// fmt.Println("--- 勝てない相手への未確定処理 ---")
for i := 1; i < n; i++ {
if w[0] < w[i] {
for _, j := range d[i] {
w[i]++
for l, k := range d[j] {
if k == i {
if l == 0 {
d[j] = d[j][1:]
} else {
d[j] = append(d[j][:l], d[j][l+1:]...)
}
}
}
z -= 2
}
d[i] = []int{}
}
}
// fmt.Println(w)
// fmt.Println(z, d)
// fmt.Println("--- 負けない相手への未確定処理 ---")
for i := 1; i < n; i++ {
if w[0] > w[i] {
cnt := 0
for _, j := range d[i] {
w[i]++
for l, k := range d[j] {
if k == i {
if l == 0 {
d[j] = d[j][1:]
} else {
d[j] = append(d[j][:l], d[j][l+1:]...)
}
}
}
cnt++
z -= 2
if w[0] == w[i] {
break
}
}
d[i] = d[i][cnt:]
}
}
// fmt.Println(w)
// fmt.Println(z, d)
// fmt.Println("--- もしまだ未確定があれば勝ち数が多いところに勝たせる ---")
for z > 0 {
for i := n - 1; i >= 0; i-- { // 勝ち数
for j := 1; j < n; j++ {
if w[j] == i && len(d[j]) > 0 {
for _, h := range d[j] {
w[j]++
for l, k := range d[h] {
if k == j {
if l == 0 {
d[h] = d[h][1:]
} else {
d[h] = append(d[h][:l], d[h][l+1:]...)
}
}
}
z -= 2
}
d[j] = []int{}
}
}
}
}
// fmt.Println(w)
// fmt.Println(z, d)
ans := 0
for i := n - 1; i >= 0; i-- {
for j, win := range w {
if win == i {
ans++
if j == 0 {
fmt.Println(ans)
return
}
break
}
}
}
}
tsuchinaga