結果
| 問題 |
No.43 野球の試合
|
| コンテスト | |
| ユーザー |
tottoripaper
|
| 提出日時 | 2014-11-24 04:46:10 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 2,103 bytes |
| コンパイル時間 | 561 ms |
| コンパイル使用メモリ | 50,412 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2025-01-02 21:07:54 |
| 合計ジャッジ時間 | 2,856 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | RE * 4 |
| other | RE * 7 |
コンパイルメッセージ
main.cpp: In function ‘int updateRank()’:
main.cpp:17:1: warning: no return statement in function returning non-void [-Wreturn-type]
17 | }
| ^
main.cpp: In function ‘int main()’:
main.cpp:20:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
20 | scanf("%d", &N);
| ~~~~~^~~~~~~~~~
main.cpp:23:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
23 | scanf("%*c");
| ~~~~~^~~~~~~
main.cpp:25:18: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
25 | scanf("%c", &result[i][j]);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <cstdio>
#include <vector>
#include <algorithm>
int N;
char result[6][6];
int win[6], all[6], rank[6];
int updateRank(){
std::vector<int> v(win, win+N);
std::sort(v.begin(), v.end());
v.erase(std::unique(v.begin(), v.end()), v.end());
for(int i=0;i<N;i++){
rank[i] = v.size() - (std::lower_bound(v.begin(), v.end(), win[i]) - v.begin());
}
}
int main(){
scanf("%d", &N);
for(int i=0;i<N;i++){
scanf("%*c");
for(int j=0;j<N;j++){
scanf("%c", &result[i][j]);
if(result[i][j] == '#'){continue;}
if(result[i][j] == '-'){continue;}
if(result[i][j] == 'o'){
win[i] += 1;
}
all[i] += 1;
}
}
for(int i=0;i<N;i++){
if(result[0][i] == '-'){
win[0] += 1;
all[0] += 1;
all[i] += 1;
result[0][i] = 'o';
result[i][0] = 'x';
}
}
updateRank();
for(int i=1;i<N;i++){
if(rank[i] >= rank[0]){continue;}
for(int j=1;j<N;j++){
if(result[i][j] == '-'){
win[i] += 1;
all[i] += 1;
all[j] += 1;
result[i][j] = 'o';
result[j][i] = 'x';
}
}
}
int rest = 0;
for(int i=1;i<N;i++){
for(int j=1;j<N;j++){
if(result[i][j] == '-'){rest += 1;}
}
}
rest /= 2;
for(;rest>0;rest--){
int mn = -1;
for(int i=0;i<N;i++){
if(all[i] < N-1 && (mn == -1 || win[i] < win[mn])){
mn = i;
}
}
int mx = -1;
for(int i=0;i<N;i++){
if(result[mn][i] == '-' && (mx == -1 || win[i] > win[mx])){
mx = i;
}
}
win[mn] += 1;
all[mn] += 1;
all[mx] += 1;
result[mn][mx] = 'o';
result[mx][mn] = 'x';
}
updateRank();
printf("%d\n", rank[0]);
}
tottoripaper