結果
問題 | No.2078 魔抜けなパープル |
ユーザー | obakyan |
提出日時 | 2022-09-25 21:46:39 |
言語 | Lua (LuaJit 2.1.1696795921) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,533 bytes |
コンパイル時間 | 58 ms |
コンパイル使用メモリ | 6,688 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-01 23:27:25 |
合計ジャッジ時間 | 543 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,816 KB |
testcase_01 | AC | 2 ms
6,940 KB |
testcase_02 | AC | 2 ms
6,944 KB |
testcase_03 | AC | 1 ms
6,940 KB |
testcase_04 | AC | 1 ms
6,944 KB |
testcase_05 | AC | 2 ms
6,940 KB |
testcase_06 | AC | 1 ms
6,940 KB |
testcase_07 | AC | 2 ms
6,940 KB |
ソースコード
local mfl, mce = math.floor, math.ceil local mmi, mma = math.min, math.max local ga = 0 local gx = 0 local function triplediv_solve(use) local ans = use * gx local base = mfl(ga / use) local rem = ga % use ans = ans + base * base * (use - rem) + (base + 1) * (base + 1) * rem return ans end local function triplediv(xmin, xmax, rep) local func = triplediv_solve local left_v, right_v = func(xmin), func(xmax) while 10 < xmax - xmin do local xmid1, xmid2 = mfl((xmin * 2 + xmax) / 3), mfl((xmin + xmax * 2) / 3) local mid_v1, mid_v2 = func(xmid1), func(xmid2) if left_v > mid_v1 then if mid_v2 > right_v then xmin = xmid2 left_v = mid_v2 elseif mid_v1 > mid_v2 then xmin = xmid1 left_v = mid_v1 else xmax = xmid2 right_v = mid_v2 end else if mid_v2 < right_v then xmax = xmid1 right_v = mid_v1 elseif mid_v1 < mid_v2 then xmin = xmid1 left_v = mid_v1 else xmax = xmid2 right_v = mid_v2 end end end local cand, candx = func(xmin), xmin for i = xmin + 1, xmax do local z = func(i) if z < cand then cand, candx = z, i end end return candx end local function solve() local x, a = io.read("*n", "*n") ga, gx = a, x -- for i = 1, a do -- print(i, triplediv_solve(i)) -- end -- os.exit() local xcnt = triplediv(1, a, 40) print(triplediv_solve(xcnt)) end local q = io.read("*n") for iq = 1, q do solve() end