結果
| 問題 | No.43 野球の試合 | 
| コンテスト | |
| ユーザー |  FromBooska | 
| 提出日時 | 2023-03-18 07:30:27 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 136 ms / 5,000 ms | 
| コード長 | 1,441 bytes | 
| コンパイル時間 | 196 ms | 
| コンパイル使用メモリ | 81,852 KB | 
| 実行使用メモリ | 76,284 KB | 
| 最終ジャッジ日時 | 2024-09-18 13:05:35 | 
| 合計ジャッジ時間 | 1,485 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 7 | 
ソースコード
# N<=6なのでありうる試合数はマックス15
# 残りの試合に番号を付けてビット全探索できるだろう
# 実装が面倒だと思う
N = int(input())
S = []
dic = {}
num = 0
for i in range(N):
    temp = list(input())
    S.append(temp)
    for j in range(N):
        if j > i and temp[j] == '-':
            dic[num] = (i, j)
            num += 1
    
#print(S)
#print(dic)
ans = N
for bit in range(1<<num):
    temp_table = [['?']*N for _ in range(N)]
    shift = 0
    for i in range(N):
        for j in range(N):
            if S[i][j] != '-':
                temp_table[i][j] = S[i][j]
            else:
                if j > i:
                    if bit>>shift & 1 == 1:
                        temp_table[i][j] = 'o'
                    else:
                        temp_table[i][j] = 'x'
                    shift += 1
                if j < i:
                    if temp_table[j][i] == 'o':
                        temp_table[i][j] = 'x'
                    elif temp_table[j][i] == 'x':
                        temp_table[i][j] = 'o'
    #print('bit', bit)
    #print(temp_table)
    
    win_count = [0]*N
    for i in range(N):
        win = temp_table[i].count('o')
        win_count[i] = win
    #print(win_count)
    
    zero_rank = 1
    for i in range(N-1, win_count[0], -1):
        if i in win_count[1:]:
            zero_rank += 1
    ans = min(ans, zero_rank)  
    
print(ans)    
            
            
            
        