結果
| 問題 |
No.609 Noelちゃんと星々
|
| コンテスト | |
| ユーザー |
okayunonaha
|
| 提出日時 | 2017-12-09 01:41:15 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 741 bytes |
| コンパイル時間 | 931 ms |
| コンパイル使用メモリ | 113,732 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-06-12 22:55:43 |
| 合計ジャッジ時間 | 2,123 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 25 |
ソースコード
import std.stdio;
import std.algorithm;
import std.array;
import std.bigint;
import std.conv;
import std.math;
import std.range;
import std.string;
import std.typecons;
long diffSum(long[] arr, long p) {
long ret;
foreach(a; arr) ret += (p - a).abs;
return ret;
}
void main() {
int N = readln.chomp.to!int;
auto Y = readln.chomp.split.map!(to!long).array;
auto t = reduce!(min, max)(Y); // これすごい
long lb = t[0], rb = t[1] + 1, mid;
long ans = Y.diffSum(lb);
while (rb - lb > 1) {
mid = (lb + rb) / 2;
long dsum = Y.diffSum(mid);
if (ans < dsum) {
rb = mid;
}
else {
ans = dsum;
lb = mid;
}
}
ans = ans.min(Y.diffSum(lb).min(Y.diffSum(rb)));
ans.writeln;
}
okayunonaha