結果
問題 | No.43 野球の試合 |
ユーザー |
|
提出日時 | 2016-04-20 14:47:30 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,354 bytes |
コンパイル時間 | 438 ms |
コンパイル使用メモリ | 58,536 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-04 14:25:22 |
合計ジャッジ時間 | 878 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 6 WA * 1 |
ソースコード
#include <iostream>#include <algorithm>using namespace std;#define N 6int n;char s[N][N];int rank(){int w[N] = { 0, };for ( int i = 0; i < n; i++ ) {for ( int j = 0; j < n; j++ ) {w[i] += s[i][j] == 'o' ? 1 : 0;}}int t[N] = { 0, };for ( int i = 0; i < n; i++ ) {t[w[i]] = 1;}int r = 0;for ( int i = w[0]; i < n; i++ ) {r += t[i];}return r;}int dfs(int a, int b, int r, int rg){s[a][b] = r ? 'o' : 'x';s[b][a] = r ? 'x' : 'o';int mn = N;if ( rg == 1 ) {mn = ::rank();}else {int t = b;for ( int i = a; i < n - 1; i++ ) {for ( int j = t + 1; j < n; j++ ) {if ( s[i][j] == '-' ) {mn = min(min(dfs(i, j, 1, rg - 1), dfs(i, j, 0, rg - 1)), mn);}}t = i + 1;}}s[a][b] = s[b][a] = '-';return mn;}int main(){int rg = 0;cin >> n;for ( int i = 0; i < n; i++ ) {for ( int j = 0; j < n; j++ ) {cin >> s[i][j];rg += s[i][j] == '-' ? 1 : 0;}}for ( int i = 1; i < n; i++ ) {if ( s[0][i] == '-' ) {s[0][i] = 'o'; s[i][0] = 'x';rg -= 2;}}rg /= 2;if ( rg == 0 ) {cout << ::rank() << endl;return 0;}for ( int i = 0; i < n - 1; i++ ) {for ( int j = i + 1; j < n; j++ ) {if ( s[i][j] == '-' ) {cout << min(dfs(i, j, 1, rg), dfs(i, j, 0, rg)) << endl;return 0;}}}return 0;}