結果
| 問題 |
No.1630 Sorting Integers (Greater than K)
|
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 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 |
ソースコード
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")