結果
| 問題 |
No.43 野球の試合
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-02-08 17:14:32 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 11 ms / 5,000 ms |
| コード長 | 1,364 bytes |
| コンパイル時間 | 915 ms |
| コンパイル使用メモリ | 68,176 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-12-25 16:49:16 |
| 合計ジャッジ時間 | 1,438 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 7 |
ソースコード
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define REP(i,first,last) for (int i=first;i<last;i++)
#define MAX(x,y) (x > y ? x : y)
#define MIN(x,y) (x < y ? x : y)
int N;
vector<char> game_board;
int calc(vector<char> gb){
vector<int> points(N, 0);
int count = 0;
for (int i=0;i<N-1;i++) {
for (int j=i+1;j<N;j++) {
if (gb[count] == 'o') {
points[i] += 1;
} else {
points[j] += 1;
}
count++;
}
}
int zero_result = points[0];
sort(points.begin(), points.end());
int order = 1;
for (auto a: points) {
if (zero_result < a) {
zero_result = a;
order++;
}
}
return order;
}
int get_order(vector<char> gb, int idx){
if (idx == gb.size()){
return calc(gb);
}
int result = 0;
if (gb[idx] == '-') {
vector<char> gb_1 = gb;
gb_1[idx] = 'o';
vector<char> gb_2 = gb;
gb_2[idx] = 'x';
int res_1 = get_order(gb_1, idx + 1);
int res_2 = get_order(gb_2, idx + 1);
if (res_1 == 1 || res_2 == 1) {
return 1;
} else {
return MIN(res_1, res_2);
}
} else {
return get_order(gb, idx + 1);
}
}
int main(){
cin >> N;
char val;
REP(i,0,N) {
REP(j,0,N) {
cin >> val;
if (i < j) game_board.push_back(val);
}
}
cout << get_order(game_board, 0) << endl;
}