結果
| 問題 |
No.1935 Water Simulation
|
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2022-05-15 11:07:03 |
| 言語 | Lua (LuaJit 2.1.1734355927) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,301 bytes |
| コンパイル時間 | 243 ms |
| コンパイル使用メモリ | 6,816 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-07-26 12:54:39 |
| 合計ジャッジ時間 | 1,472 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 29 |
ソースコード
local mmi, mma = math.min, math.max
local ffi = require("ffi")
local C = ffi.C
ffi.cdef[[
long long atoll(const char*);
]]
local function lltonumber(str)
return C.atoll(str)
end
local v1, v2, v3, v4, n = io.read():match("(%d+) (%d+) (%d+) (%d+) (%d+)")
v1 = tonumber(v1)
v2 = tonumber(v2)
v3 = tonumber(v3)
v4 = tonumber(v4)
n = lltonumber(n)
local a = {v1, 0, 0, 0}
local t = {}
local function push(day)
local z = a[1] + a[2] * 101 + a[3] * 101 * 101
t[z] = day
end
local function check()
local z = a[1] + a[2] * 101 + a[3] * 101 * 101
return t[z]
end
local day = 0LL
push(day)
while day < n do
day = day + 1LL
if day % 4LL == 1LL then
local d = mmi(a[1], v2 - a[2])
a[1] = a[1] - d
a[2] = a[2] + d
elseif day % 4LL == 2LL then
local d = mmi(a[2], v3 - a[3])
a[2] = a[2] - d
a[3] = a[3] + d
elseif day % 4LL == 3LL then
local d = mmi(a[3], v4 - a[4])
a[3] = a[3] - d
a[4] = a[4] + d
else
local d = mmi(a[4], v1 - a[1])
a[4] = a[4] - d
a[1] = a[1] + d
end
if day % 4LL == 0LL then
local tmp = check()
if tmp then
local len = day - tmp
local rem = n - day
local warp_day = day + (rem / len) * len
day = warp_day
t = {}
else
push(day)
end
end
end
print(table.concat(a, " "))