結果
| 問題 |
No.504 ゲーム大会(ランキング)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-05-26 15:12:04 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,942 bytes |
| コンパイル時間 | 3,719 ms |
| コンパイル使用メモリ | 77,968 KB |
| 実行使用メモリ | 66,164 KB |
| 最終ジャッジ日時 | 2024-09-19 20:06:45 |
| 合計ジャッジ時間 | 10,604 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 3 WA * 10 |
ソースコード
package test_5;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* No.504 ゲーム大会(ランキング)
*
* K 君はゲーム大会にやってきた。 このゲームは、できるだけ高いスコアを目指すゲームである。 K君を含めてNN人が参加している。
* 順番に1回ずつプレイしていき、随時ランキングが更新されていく。 K君は最初にプレイする。
* それぞれの人がプレイし終わった時に、K君が何位にいるかを求めよ。 スコアが高い方の順位が上になる。 同点の場合は先にプレイした方の順位が上とする。
*/
public class Question_06_0526_1 {
static final int NUM_MIN = 1;
static final int NUM_MAX = (int) Math.pow(10, 5);
static final int SCORE_MIN = 1;
static final int SCORE_MAX = (int) Math.pow(10, 9);
static int[] kRankList; // k君の順位
static int kScore; // k君のスコア
public static void main(String[] args) {
InputStreamReader re = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(re);
try {
// N(人数)取得
String stringPeople = br.readLine();
int numPeople = Integer.parseInt(stringPeople);
// 人数が有効範囲か確認
if (NumJudg(numPeople, NUM_MAX, NUM_MIN)) {
// 人数で初期化
kRankList = new int[numPeople];
// 人数分処理する
for (int i = 0; i < numPeople; i++) {
int score = Integer.parseInt(br.readLine());
if (i == 0) {
kRankList[i] = 1; // 最初はK君が1位
} else {
kRankList[i] = RankJudg(score, i);
}
}
// 順位表示
for (int ranking : kRankList) {
System.out.println(ranking);
}
} else {
System.out.println("数値が有効範囲外です。");
}
} catch (NumberFormatException e) {
System.out.println("数字を入力して下さい。");
} catch (IOException e) {
System.out.println("エラーが発生しました。");
} finally {
try {
re.close();
br.close();
} catch (IOException e) {
System.out.println("InputStreamReader、BufferedReaderクローズ中にエラーが発生しました");
}
}
}
/**
* 有効値判定
* @param num 判定する数字
* @param max 最大値
* @param min 最小値
* @return 範囲内ならtrue,範囲外ならfalseを返す
*/
private static boolean NumJudg(int num, int max, int min) {
Boolean result = false;
if (min <= num && num <= max) {
result = true;
}
return result;
}
/**
* 順位判定
* @param score 点数
* @param count 何人目か
* @return 現在の順位
*/
static private int RankJudg(int score, int count) {
//抜かされたらランキングを更新
if (score > kRankList[0]) {
kRankList[count] = kRankList[count - 1] + 1;
} else {
kRankList[count] = kRankList[count - 1];
}
return kRankList[count];
}
}