結果
| 問題 |
No.43 野球の試合
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-12-04 11:08:34 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,865 bytes |
| コンパイル時間 | 771 ms |
| コンパイル使用メモリ | 80,340 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-27 19:41:40 |
| 合計ジャッジ時間 | 1,307 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 4 |
| other | WA * 7 |
ソースコード
#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>
#include <queue>
using namespace std;
#define REP(i,first,last) for (int i=first;i<last;i++)
int n;
int result = 100000;
int win_count_0 = 0;
char game_results[6][6];
vector<char> game_results_pattern;
int main(){
cin>>n;
char val;
//inputを表にする
REP(i,0,n){
REP(j,0,n){
cin >> val;
game_results[i][j] = val;
cout<<val<<" ";
}
cout<<endl;
}
//0の試合の残りを全て「勝ち」にして、勝ち数を保存しておく
REP(i,1,n){
if (game_results[0][i] == 'o' || game_results[0][i] == '-') {
game_results[0][i] = 'o';
win_count_0 += 1;
}
}
//game_results_patternに現状を記録
REP(i,0,n){
REP(j,i+1,n){
game_results_pattern.push_back(game_results[i][j]);
}
}
//queueで処理
queue<vector<char>> que;
que.push(game_results_pattern);
while (!que.empty()) {
vector<char> q = que.front();
que.pop();
vector<char>::iterator it = find(q.begin(), q.end(), '-');
if (it != q.end()) {
q[it - q.begin()] = 'o';
que.push(q);
q[it - q.begin()] = 'x';
que.push(q);
} else {
int c = 0;
vector<int> points(6);
REP(i,0,n){
REP(j,i+1,n){
if (q[c] == 'o') {
points[i] += 1;
} else {
points[j] += 1;
}
c++;
}
}
sort(points.begin(), points.end(), greater<int>());
// points.erase(unique(points.begin(), points.end()), points.end());
//win_count_0が何番目に入っているかを確認
vector<int>::iterator it = find(points.begin(), points.end(), win_count_0);
int new_result = it - points.begin() + 1;
result = (new_result < result) ? new_result : result;
}
}
cout<<result<<endl;
}