結果
| 問題 |
No.370 道路の掃除
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-05-15 21:00:33 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 173 ms / 2,000 ms |
| コード長 | 1,121 bytes |
| コンパイル時間 | 2,206 ms |
| コンパイル使用メモリ | 84,132 KB |
| 実行使用メモリ | 42,032 KB |
| 最終ジャッジ日時 | 2024-10-14 16:54:17 |
| 合計ジャッジ時間 | 7,838 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 34 |
ソースコード
package jp.fedom.challange.yuki.l2.q370;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int[] d = new int[M];
for (int i = 0; i < M; i++) {
d[i] = sc.nextInt();
}
sc.close();
System.out.println(solve(N, M, d));
}
public static int solve(int N, int M, int[] c) {
List<Integer> posN = new ArrayList<>();
List<Integer> negN = new ArrayList<>();
for (int i : c) {
if (i < 0) {
negN.add(i * -1);
} else {
posN.add(i);
}
}
Collections.sort(posN);
Collections.sort(negN);
int min = Integer.MAX_VALUE;
for (int pN = 0; pN <= N; pN++) {
int nN = N - pN;
if (pN <= posN.size() && nN <= negN.size()) {
int pd = pN - 1 < 0 ? 0 : posN.get(pN - 1);
int nd = nN - 1 < 0 ? 0 : negN.get(nN - 1);
int d = Math.min(pd * 2 + nd, pd + nd * 2);
min = Math.min(d, min);
}
}
return min;
}
}