結果

問題 No.3016 ハチマキおじさん
ユーザー さかさのさかな
提出日時 2025-01-25 13:36:39
言語 Java
(openjdk 23)
結果
WA  
実行時間 -
コード長 1,232 bytes
コンパイル時間 2,877 ms
コンパイル使用メモリ 83,484 KB
実行使用メモリ 79,308 KB
最終ジャッジ日時 2025-01-25 22:52:16
合計ジャッジ時間 33,499 ms
ジャッジサーバーID
(参考情報)
judge8 / judge9
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 22 WA * 9
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] oji = new int[n];
		int[] gaki = new int[n - 1];
		int[] f = new int[n];
		int[] b = new int[n];
		for(int i = 0;i < n;i++) {
			oji[i] = sc.nextInt();
		}for(int i = 0;i < n - 1;i++) {
			gaki[i] = sc.nextInt();
		}Arrays.sort(oji);
		Arrays.sort(gaki);
		//前からi人までに渡したときの総和
		for(int i = 1;i <= n - 1;i++) {
			f[i] = f[i - 1] + Math.abs(oji[i - 1] - gaki[i - 1]);
		}//後ろからi人
		for(int i = 1;i <= n - 1;i++) {
			b[i] = b[i - 1] + Math.abs(gaki[n - i - 1] - oji[n - i]);
		}long min = Long.MAX_VALUE;
		HashSet<Integer> rem = new HashSet<>();
		for(int i = 0;i <= n - 1;i++) {
			long sum = f[i] + b[n - 1 - i];
			//System.out.println(f[i] + " " + b[n - 1 - i]);
			//System.out.println(sum);
			if(sum < min) {
				min = sum;
				rem = new HashSet<>();
				rem.add(oji[i]);
			}else if(sum == min) {
				rem.add(oji[i]);
			}
		}StringBuilder sb = new StringBuilder();
		for(int s:rem) {
			sb.append(s + " ");
		}System.out.println(rem.size());
		System.out.print(sb);
	}

}
0