結果

問題 No.1630 Sorting Integers (Greater than K)
ユーザー 👑 obakyan
提出日時 2021-07-30 23:53:52
言語 Lua
(LuaJit 2.1.1734355927)
結果
AC  
実行時間 30 ms / 2,000 ms
コード長 1,081 bytes
コンパイル時間 240 ms
コンパイル使用メモリ 6,944 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-09-16 04:05:11
合計ジャッジ時間 1,529 ms
ジャッジサーバーID
(参考情報)
judge6 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 5
other AC * 22
権限があれば一括ダウンロードができます

ソースコード

diff #

local n, k = io.read():match("(%d+) (%d+)")
n = tonumber(n)
local a = {}
for i = 1, 9 do
  a[i] = io.read("*n")
end
if #k < n then
  for i = 1, 9 do
    io.write(string.rep(tostring(i), a[i]))
  end
  io.write("\n")
  os.exit()
elseif n < #k then
  print(-1)
  os.exit()
end

local b = {}
for i = 1, 9 do b[i] = a[i] end
local lastpos = 0
for i = 1, n - 1 do
  local kv = k:byte(i) - 48
  if 0 < kv and 0 < b[kv] then
    lastpos = i
    b[kv] = b[kv] - 1
  else
    break
  end
end
local f = false
for i = lastpos + 1, 1, -1 do
  local kv = k:byte(i) - 48
  for j = kv + 1, 9 do
    if 0 < b[j] then
      f = i break
    end
  end
  if f then break end
  if 1 < i then
    kv = k:byte(i - 1) - 48
    b[kv] = b[kv] + 1
  end
end
if not f then
  print(-1) os.exit()
end
for i = 1, f - 1 do
  local kv = k:byte(i) - 48
  io.write(kv)
  a[kv] = a[kv] - 1
end
do
  local kv = k:byte(f) - 48
  for i = kv + 1, 9 do
    if 0 < a[i] then
      io.write(i)
      a[i] = a[i] - 1
      break
    end
  end
end

for i = 1, 9 do
  io.write(string.rep(tostring(i), a[i]))
end
io.write("\n")
0