結果
問題 | No.43 野球の試合 |
ユーザー |
![]() |
提出日時 | 2020-05-05 20:30:13 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 12 ms / 5,000 ms |
コード長 | 1,257 bytes |
コンパイル時間 | 939 ms |
コンパイル使用メモリ | 92,168 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-27 03:02:12 |
合計ジャッジ時間 | 1,546 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 7 |
ソースコード
#include <iostream>#include <vector>#include <string>#include <list>#include <queue>#include <map>#include <algorithm>#define rep(i, n) for(i = 0; i < (n); i++)#define chmax(x, y) x = max(x, y)#define chmin(x, y) x = min(x, y)#define MOD 1000000007#define PI 3.14159265358979323846#define INF 1 << 30using namespace std;typedef long long ll;typedef pair<int, int> pp;vector<pp> d;int Judge(int v, vector<int> win) {int i, ans = 1;rep(i, d.size()) {if (v & (1 << i))win[d[i].first]++;elsewin[d[i].second]++;}map<int, int, greater<int>> mp;rep(i, win.size())mp[win[i]];for (auto it = mp.begin(); (*it).first != win[0]; it++)ans++;return ans;}int Search(int n, int v, vector<int> & win) {if (n == d.size())return Judge(v, win);int ans = Search(n + 1, v << 1, win);chmin(ans, Search(n + 1, (v << 1) + 1, win));return ans;}int main(void) {int num, i, j, ans;cin >> num;vector<string> s(num);vector<int> win(num, 0);rep(i, num) {cin >> s[i];rep(j, num) {if (s[i][j] == 'o')win[i]++;}}rep(i, num - 1) {for (j = i + 1; j < num; j++) {if (s[i][j] == '-')d.push_back(make_pair(i, j));}}ans = Search(0, 0, win);cout << ans << "\n";return 0;}