結果

問題 No.504 ゲーム大会(ランキング)
ユーザー nihi9119nihi9119
提出日時 2017-05-26 14:58:26
言語 Java21
(openjdk 21)
結果
WA  
実行時間 -
コード長 2,943 bytes
コンパイル時間 3,048 ms
コンパイル使用メモリ 77,732 KB
実行使用メモリ 66,284 KB
最終ジャッジ日時 2024-09-19 20:06:31
合計ジャッジ時間 9,420 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 52 ms
49,996 KB
testcase_01 AC 52 ms
49,932 KB
testcase_02 AC 51 ms
50,256 KB
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 AC 51 ms
50,288 KB
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 AC 641 ms
66,172 KB
testcase_13 WA -
testcase_14 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

package test_5;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * No.504 ゲーム大会(ランキング)
 *
 * K 君はゲーム大会にやってきた。 このゲームは、できるだけ高いスコアを目指すゲームである。 K君を含めてNN人が参加している。
 * 順番に11回ずつプレイしていき、随時ランキングが更新されていく。 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];
	}

}
0