module main; // https://roiti46.hatenablog.com/entry/2015/04/29/yukicoder_No.198_%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%87%E3%82%A3%E3%83%BC%E3%83%BB%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%EF%BC%92 より // 三分探索 import std; void main() { // 入力 long B = readln.chomp.to!long; int N = readln.chomp.to!int; auto C = new long[](N); foreach (ref c; C) c = readln.chomp.to!long; // 答えの計算 long ans = 10L ^^ 18; long l = -1, r = 10L ^^ 18; while (r - l > 2) { long lm = (2 * l + r) / 3, rm = (l + 2 * r) / 3; if (C.map!(c => lm - c).sum > B) r = lm; else if (C.map!(c => rm - c).sum > B) r = rm; else if (C.map!(c => abs(lm - c)).sum <= C.map!(c => abs(rm - c)).sum) r = rm; else l = lm; } // 答えの出力 writeln(C.map!(c => abs((r + l) / 2 - c)).sum); }