結果
| 問題 |
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 |
ソースコード
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);
}
}