結果

問題 No.3408 1215 Segments
コンテスト
ユーザー Kude
提出日時 2025-12-16 10:48:47
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 221 ms / 2,500 ms
コード長 5,297 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,850 ms
コンパイル使用メモリ 82,196 KB
実行使用メモリ 83,228 KB
最終ジャッジ日時 2025-12-16 10:48:59
合計ジャッジ時間 11,898 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 46
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

s = b'{Wp48S^xk9=GL@E0stWa761SMbT8$j;3PE%TwMSdX4qpOhynqO;0KzSm2c^Yy_BZRt!Pn%ZY(2jZEa@_)MJynfv4nyob|K4uqNDEIE_hvNteajmFDrYxB3L%JOyYUZneun6HU+v(YXW={|fuuDx&1fW@d!<mDM2#Mahgh9VPGha*597+67mm*(WTr<yeuYy4HT~7v`jWQos%Y=SPY2k+;Ox>S&0VE{v8-3)RVHfxiE<^dHie3i(|G|BoRc$^O|7@U-7jU;Ec~MF`C>RTaix)@{&L1xd=XjtYW4oDmYLv?(FrNd~`&y<amh2Yw)lFdW6-%i`bc`b*ooG-+>T4f#?csRBKAFHL0FmaP&-(yl&Un5j@ac6t&{Mzv*mw<nLDs|+jlSo%95<8?1cuLoNP$Sg_b>WG0iL0SMm%}O_gQSri3I26(}5L-^}<Ed1Mj4h(LvbD;-Ah`QSf%ROM2vBR#Gnk0l{g1_4n%mn_PxJ*|g-UV#LX&}2)ozMM+Ug_$G!ggmzlkUXC3lR-0oPBeF3@7!f!&c8Km63s7?lI2Lt?-&C9v@bRbWfC9DcR!IFA{`0w12g8nM!HJsd$waE;F`oWWJ9FZfE86wzqHbJt;@05C27a3wledxvRaWky$nUSXIwiL0_Fe5Oh1y5NhE!cj&K&POe*W#j568XtU99Ybu3y2XuPqrGZ~=7<@$J5{Yw6hj<EK`byahw_u=DZI9Ta?s54X6F25GwfTO(ng%FweMHCZc4$7icBXVq%>GmA#IP`R1mcgJjs%?q1^zym@05z1BGjF=Dz7xhrBFrgKSn;#XUg9RiUrkmx`>^Fv{HOx;a!9Ne^r?eN-$BK~M^D^~UY37X{!2>FNUtOD0xqNGZ)LsT<2~W0%}FfAhRMK>E#8hWQ(6TO~{wtl39?+on5f7>V|bJ0gAn&*43yQ#UF8rRX)k3Cu#~;;dQgLDn@U;WXh#+?q;e8~g%bsE!n^{_2;21jJc#PU(imqybD4%an+FjQZ-7*1c0HHa2q4AMp{oA4;7$xUhP)=Qrb<aR}QfOC)%pSY+u+!<13HoQO>HxRWL$tGff3^4;@}e@-0OLG0t)UJYt6xP1la3>#883dqUb50!WC30*sOHaL~A?Rgg~i&!uVcQ@FEmSfy=K3xNQ6~6bjLkd-b<cLGLFE;b)`#{5#(jr(-2R2$4zR_(=5e3{&H2kRVhC`Fw89m43H`CDJi7gTLwNhM+nW9D3@J1Ox_RXPVLRzj)G7^GZHyUjz@q%G_VU0+-!L2xRmL$F8fnmj!<C>w>^2))#Wv(WlDcuSi07muW{Dg$j;=dpSa-TPcw2t_oLP1z|$(G(?EZQ`|Nk+=U2(q-j`MsEJm)J*a03XVDkb2eGcYs?u%gQ&@Q5aG&iH$sgOwr=6N)j%u>{93dRn-Vgb0Dxrsfn-{DbEmS)*{-~aCpu=I7?xAll`BU9>l^y;&nd|IsrP}V6|3MlQW{}Q5;@npNgU6FV%0jUR$C(M|~|jqg(efDt!?l`jn2rm|boL`C=z4g5jgQ`(Kmc<Y#19_{B8zmVcx*UMf6Kb=j2Z2*Z@Fx6CMbRUqYE=ya^1ZaIZ2(7A#=5q-JKr^=&1`JBcXB-%4c1IDpco!BUTMYw<pIywf_jD8dt52utDrA3IAEnVD5+1VCRF;g)WCUlnVJ7c7X&sbcMb!u-3K0RF4r>#f4DoJEP$AYL{9G(Th>l@-xj4V;s<N}|qLn0g)AmVRCtu0hX)3-y?CqrEMV<mxnVdTMV#*s^hEf-D1`yA0DHr-VihrrqJ`KqX@&bQFmi0?}W5Z6=ehtMrpP=j8_?$ofEd{-LT&N>L^x*aI_+8E+TD9pa2JZkvfN?Ciz;G!y_0s`m;6Up1XaXKrz5Du01$(kI2$tK!lj{hz_4kmL(7#jYvYy#<PXi&+sdEtgi4e)w6wr_k$du)^{jK~NUh})|V&ZPY)IP#XdKSkEi0q6dLB^Awk6~mCr{8QTFBe?+X-c_#tt(5hYM^TsoLr$-}|LlS6K=9XbP!Z}^w!n0-_aCKj6*>xfCM=vZytA1Q$P*~o!8dVxMocY9DOZO=ktj<s-2uwn?zQq2dH%(d4H;<-;M(unZUkcSBC9p8(qaiBAVn7=>SGCAN9c}fa5c#kn!Cj&6Y;-9uH%~}KCM@!b^VfxzRD5}4hEV7gg7xv%VTzO8zSKJV8PP3t5UnH)vOdO-rZSZGE&Jz>l27$e)ch&7`@4`D-+DT#vqR13@4td<itNYge{dTPg4<x>Nj)VNEkXdm!riYc`~JK;ur8SNA?Aw3zUZi6QTS*!Re?ERjg}`l*^4dz}?HAlzvo~(83I!d3*?g&fXar3f8TJ_)5mKTO!hD7!~<olVk11?yOp$%Ex*dCP^<rV*RJMh&HY`bRbzQI8&cHAYdRmzf{z@hP*Ad$GJ#?G7JL)w1nLN^UyBhc&={+00H<8wnzW~_B=GhvBYQl0ssI200dcD'
import base64, lzma
s = lzma.decompress(base64.b85decode(s)).decode()
d = zip(*[map(int, iter(s))] * 15)
vals = [0,0,1,1,2,3,4,5,6,6,7,7,8,9,9]
val2id = [[] for _ in range(10)]
for i in range(15):
    val2id[vals[i]].append(i)

n = list(map(int, input()))
ans = 10 ** 19
for f0 in d:
    rest = 19 - sum(f0)
    for c35 in range(rest // 2 + 1):
        for c12 in range(rest - 2 * c35 + 1):
            f = list(f0)
            f[3] += c35
            f[5] += c35
            f[12] += c12
            if sum(f) < len(n):
                continue
            if sum(f) > len(n):
                v = 0
                for i in range(2, 15):
                    for _ in range(f[i]):
                        v = 10 * v + vals[i]
                        for _ in range(f[0] + f[1]):
                            v *= 10
                        f[0] = f[1] = 0
                ans = min(ans, v)
            else:
                digits = []
                ok = True
                for i in range(len(n)):
                    for p in val2id[n[i]]:
                        if f[p]:
                            f[p] -= 1
                            digits.append(vals[p])
                            break
                    else:
                        for p in range(val2id[n[i]][0], 15):
                            if f[p]:
                                f[p] -= 1
                                digits.append(vals[p])
                                for p in range(15):
                                    for _ in range(f[p]):
                                        digits.append(vals[p])
                                break
                        else:
                            for p in range(15)[::-1]:
                                for _ in range(f[p]):
                                    digits.append(vals[p])
                            for j in range(len(digits) - 1)[::-1]:
                                if digits[j] < digits[j+1]:
                                    k = len(digits) - 1
                                    while digits[k] <= digits[j]:
                                        k -= 1
                                    digits[j], digits[k] = digits[k], digits[j]
                                    j += 1
                                    k = len(digits) - 1
                                    while j < k:
                                        digits[j], digits[k] = digits[k], digits[j]
                                        j += 1
                                        k -= 1
                                    break
                            else:
                                ok = False
                        break
                if ok:
                    v = 0
                    for x in digits:
                        v = 10 * v + x
                    ans = min(ans, v)

print(ans)
0