提出 #278940


ソースコード 拡げる


import java.util.*;

public class Main {

	private void solve() {
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);

		int ninzu = sc.nextInt();
		int myAbility = sc.nextInt();

		int[] downAbilities = new int[ninzu];
		int[] upAbilities = new int[ninzu];
		int downCnt = 0;
		int upCnt = 0;
		for (int i = 0; i < ninzu; i++) {
			int ability = sc.nextInt();
			if (ability < myAbility) {
				downAbilities[downCnt++] = ability;
			} else {
				upAbilities[upCnt++] = ability;
			}
		}

		Arrays.sort(downAbilities);
		Arrays.sort(upAbilities);
		System.out.println("debug: " + Arrays.toString(downAbilities));
		System.out.println("debug: " + Arrays.toString(upAbilities));

		int roryoku = 0;
		for (int tempDownCnt = ninzu - 1, tempUpCnt = downCnt; tempDownCnt >= upCnt || tempUpCnt < ninzu;) {
			if (tempUpCnt >= ninzu) {
				// System.out.println("debug1: " + downAbilities[tempDownCnt]);
				if (tempDownCnt == ninzu - 1) {
					roryoku += myAbility - downAbilities[tempDownCnt];
				} else {
					roryoku += Math.min(myAbility - downAbilities[tempDownCnt], downAbilities[tempDownCnt + 1]
							- downAbilities[tempDownCnt]);
				}
				tempDownCnt--;
			} else if (tempDownCnt < upCnt) {
				// System.out.println("debug2: " + upAbilities[tempUpCnt]);
				if (tempUpCnt == downCnt) {
					roryoku += upAbilities[tempUpCnt] - myAbility;
				} else {
					roryoku += Math.min(upAbilities[tempUpCnt] - myAbility, upAbilities[tempUpCnt]
							- upAbilities[tempUpCnt - 1]);
				}
				tempUpCnt++;
			} else {
				if (myAbility - downAbilities[tempDownCnt] < upAbilities[tempUpCnt] - myAbility) {
					// System.out.println("debug3: " +
					// downAbilities[tempDownCnt]);
					if (tempDownCnt == ninzu - 1) {
						roryoku += myAbility - downAbilities[tempDownCnt];
					} else {
						roryoku += Math.min(myAbility - downAbilities[tempDownCnt], downAbilities[tempDownCnt + 1]
								- downAbilities[tempDownCnt]);
					}
					tempDownCnt--;
				} else {
					// System.out.println("debug4: " + upAbilities[tempUpCnt]);
					if (tempUpCnt == downCnt) {
						roryoku += upAbilities[tempUpCnt] - myAbility;
					} else {
						roryoku += Math.min(upAbilities[tempUpCnt] - myAbility, upAbilities[tempUpCnt]
								- upAbilities[tempUpCnt - 1]);
					}
					tempUpCnt++;
				}
			}
			// System.out.println("debug: roryoku = " + roryoku);
		}

		System.out.println(roryoku);
	}

	public static void main(String[] args) {
		new Main().solve();
	}
}

提出情報

提出日時
問題 B - コミュニケーション能力(Communication Ability)
ユーザ kakiageudon
言語 Java (OpenJDK 1.7.0)
得点 0
コード長 2559 Byte
結果 WA
実行時間 500 ms
メモリ 24116 KiB

ジャッジ結果

セット名 all
得点 / 配点 0 / 500
結果
WA × 4
RE × 12
セット名 テストケース
all subtask0_sample01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt
ケース名 結果 実行時間 メモリ
subtask0_sample01.txt WA 500 ms 23272 KiB
subtask1_01.txt WA 467 ms 23260 KiB
subtask1_02.txt WA 483 ms 23384 KiB
subtask1_03.txt WA 486 ms 23212 KiB
subtask1_04.txt RE 461 ms 23220 KiB
subtask1_05.txt RE 476 ms 23212 KiB
subtask1_06.txt RE 456 ms 23216 KiB
subtask1_07.txt RE 497 ms 23220 KiB
subtask1_08.txt RE 460 ms 23260 KiB
subtask1_09.txt RE 477 ms 23216 KiB
subtask1_10.txt RE 465 ms 23316 KiB
subtask1_11.txt RE 495 ms 23340 KiB
subtask1_12.txt RE 462 ms 23348 KiB
subtask1_13.txt RE 474 ms 23092 KiB
subtask1_14.txt RE 447 ms 23296 KiB
subtask1_15.txt RE 470 ms 24116 KiB