結果
問題 |
No.466 ジオラマ
|
ユーザー |
👑 |
提出日時 | 2022-06-26 22:41:19 |
言語 | Lua (LuaJit 2.1.1734355927) |
結果 |
AC
|
実行時間 | 12 ms / 2,000 ms |
コード長 | 1,870 bytes |
コンパイル時間 | 352 ms |
コンパイル使用メモリ | 5,376 KB |
実行使用メモリ | 6,144 KB |
最終ジャッジ日時 | 2024-11-17 13:44:35 |
合計ジャッジ時間 | 4,021 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 83 |
ソースコード
local a, b, c, d = io.read("*n", "*n", "*n", "*n") local abmin = math.min(a, b) local edge = {} local offset = 2 local function getnew() offset = offset + 1 return offset - 1 end local function make_chain(spos, size) assert(0 < size) local t = {spos} for i = 2, size do local v = getnew() table.insert(t, v) end return t end if c == 0 then local t0 = make_chain(0, a) local t1 = make_chain(1, b) for i = 2, #t0 do table.insert(edge, {t0[i - 1], t0[i]}) end for i = 2, #t1 do table.insert(edge, {t1[i - 1], t1[i]}) end elseif c == a and c == b then if c == 1 then print(-1) os.exit() end local t = make_chain(0, c - 1) table.insert(edge, {0, 1}) table.insert(edge, {1, 0}) for i = 2, #t do table.insert(edge, {t[i - 1], t[i]}) end elseif c == a then local t0 = make_chain(0, a) local t1 = make_chain(1, b - a) for i = 2, #t0 do table.insert(edge, {t0[i - 1], t0[i]}) end for i = 2, #t1 do table.insert(edge, {t1[i - 1], t1[i]}) end table.insert(edge, {t1[#t1], t0[1]}) elseif c == b then local t0 = make_chain(1, b) local t1 = make_chain(0, a - b) for i = 2, #t0 do table.insert(edge, {t0[i - 1], t0[i]}) end for i = 2, #t1 do table.insert(edge, {t1[i - 1], t1[i]}) end table.insert(edge, {t1[#t1], t0[1]}) else local t0 = make_chain(0, a - c) local t1 = make_chain(1, b - c) for i = 2, #t0 do table.insert(edge, {t0[i - 1], t0[i]}) end for i = 2, #t1 do table.insert(edge, {t1[i - 1], t1[i]}) end local cpos = getnew() table.insert(edge, {t0[#t0], cpos}) table.insert(edge, {t1[#t1], cpos}) local tc = make_chain(cpos, c) for i = 2, #tc do table.insert(edge, {tc[i - 1], tc[i]}) end end if d < #edge then print(-1) else print(offset .. " " .. #edge) for i = 1, #edge do print(edge[i][1] .. " " .. edge[i][2]) end end