結果

問題 No.43 野球の試合
ユーザー tottoripaper
提出日時 2014-11-24 04:38:53
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
RE  
実行時間 -
コード長 2,093 bytes
コンパイル時間 574 ms
コンパイル使用メモリ 50,288 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2025-01-02 21:07:46
合計ジャッジ時間 2,898 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]);
      |             ~~~~~^~~~~~~~~~~~~~~~~~~~~

ソースコード

diff #
プレゼンテーションモードにする

#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] < mn)){
mn = i;
}
}
int mx = -1;
for(int i=0;i<N;i++){
if(result[mn][i] == '-' && (mx == -1 || win[i] > 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]);
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0