結果

問題 No.1368 サイクルの中に眠る門松列
ユーザー 👑 obakyan
提出日時 2021-07-22 10:45:12
言語 Lua
(LuaJit 2.1.1734355927)
結果
AC  
実行時間 68 ms / 2,000 ms
コード長 867 bytes
コンパイル時間 161 ms
コンパイル使用メモリ 6,684 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-07-17 14:36:57
合計ジャッジ時間 2,225 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 15
権限があれば一括ダウンロードができます

ソースコード

diff #

local mmi, mma = math.min, math.max
local q = io.read("*n")
for iq = 1, q do
  local n = io.read("*n")
  local a = {}
  for i = 1, n do
    a[i] = io.read("*n")
  end
  local t = {}
  local function solve()
    local r1 = 0
    for i = 1, n do
      t[i] = 0
    end
    for i = 1, n do
      if i == n then
        r1 = mma(r1, t[i])
      else
        t[i + 1] = mma(t[i + 1], t[i])
      end
      if i <= n - 2 then
        if a[i] ~= a[i + 2] and 0 < (a[i + 1] - a[i]) * (a[i + 1] - a[i + 2]) then
          if i == n - 2 then
            r1 = mma(r1, t[i] + a[i])
          else
            t[i + 3] = mma(t[i + 3], t[i] + a[i])
          end
        end
      end
    end
    return r1
  end
  local r = solve()
  for irep = 1, 2 do
    local z = a[1]
    for i = 2, n do
      a[i - 1] = a[i]
    end
    a[n] = z
    r = mma(r, solve())
  end
  print(r)
end
0