結果
問題 |
No.43 野球の試合
|
ユーザー |
![]() |
提出日時 | 2018-06-23 16:20:39 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,758 bytes |
コンパイル時間 | 1,740 ms |
コンパイル使用メモリ | 181,496 KB |
実行使用メモリ | 10,140 KB |
最終ジャッジ日時 | 2024-06-30 18:28:52 |
合計ジャッジ時間 | 8,678 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 3 TLE * 1 -- * 3 |
ソースコード
#include <bits/stdc++.h> using namespace std; using pii = pair<int, int>; int N; char B[10][10]; int h = 0; int ans = 100; void print() { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { printf("%c", B[i][j]); } puts(""); } } bool exist() { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (B[i][j] == '-') return true; } } return false; } int result() { map<int, int> mp; for (int i = 0; i < N; i++) { mp[i] = 0; } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (B[i][j] == 'o') { mp[i]++; } } } set<int> S; for (auto x:mp) { S.insert(x.second); } int cnt = 1; for (auto itr = S.rbegin(); itr != S.rend(); itr++) { if (*itr == mp[0]) { return cnt; } cnt++; } return 100; } void dfs() { if (!exist()) { // print(); // int res = result(); // printf("res: %d\n", res); // puts("---------------"); ans = min(ans, result()); } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (B[i][j] == '-') { B[i][j] = 'o'; B[j][i] = 'x'; dfs(); B[i][j] = 'x'; B[j][i] = 'o'; dfs(); B[i][j] = '-'; } } } } int main() { cin >> N; for (int i = 0; i < N; i++) { cin >> B[i]; } for (int i = 0; i < N; i++) { if (B[0][i] == '-') { B[0][i] = 'o'; B[i][0] = 'x'; } } for (int i = 0; i < N; i++) { if (B[0][i] == '-') { B[0][i] = 'o'; B[i][0] = 'x'; } } dfs(); cout << ans << endl; return 0; }