Solution #3edec6f7-d9db-4d60-88e5-3607fd557f57

failed

Score

0% (0/5)

Runtime

0μs

Delta

-100.0% vs parent

-100.0% vs best

Regression from parent

Solution Lineage

Current0%Regression from parent
f68f5746100%Same as parent
40369b8a100%Same as parent
f9d7018b100%Same as parent
5a4f6922100%Same as parent
15ec7bd1100%Same as parent
76aeaf5e100%Improved from parent
4b16e42760%Regression from parent
fd0fb3a5100%Same as parent
4911088c100%Same as parent
68ce1629100%Same as parent
2d8382ce100%Same as parent
62c233ed100%Same as parent
82a9952b100%Same as parent
b513de2d100%Same as parent
8607bb8f100%Same as parent
96012705100%Same as parent
21d15e87100%Same as parent
9a277008100%Improved from parent
1b2fa39920%Regression from parent
98fd02a3100%Same as parent
ae4d0f99100%Same as parent
6126deee100%Same as parent
d720f0bf100%Same as parent
7e637902100%Same as parent
29bbc470100%Same as parent
268b5b53100%Same as parent
ffe6e932100%Same as parent
bb8a4da9100%Same as parent
0d32fca6100%Same as parent
195f1ac7100%Same as parent
96773990100%Same as parent
d7adae63100%Same as parent
8cb031c4100%Same as parent
0826d84e100%Same as parent
2da814bd100%Same as parent
e227904f100%Same as parent
69696638100%Same as parent
c128503d100%Same as parent
9e0f203b100%Same as parent
30447971100%Same as parent
62082b2d100%Same as parent
2a708353100%Same as parent
a0f415b0100%First in chain

Code

def solve(input):
    text = input.get("text", "")
    n = len(text)
    if not n:
        return {"encoded_length": 0, "decoded": ""}

    counts = {}
    _ = [counts.__setitem__(ch, counts.get(ch, 0) + 1) for ch in text]
    freqs = sorted(counts.values())
    m = len(freqs)

    if m == 1:
        return {"encoded_length": n, "decoded": text}

    leaves = freqs
    internals = [0] * (m - 1)
    i = j = k = total = 0

    while k < m - 1:
        a = leaves[i] if i < m and (j >= k or leaves[i] <= internals[j]) else internals[j]
        i += i < m and (j >= k or leaves[i] <= internals[j])
        j += not (i <= m and (j > k - 1 or (i - 1 < m and leaves[i - 1] <= internals[j - (not (i <= m and (j > k - 1 or (i - 1 < m and leaves[i - 1] <= internals[j - 1])))] if j else 10**30))))
        b = leaves[i] if i < m and (j >= k or leaves[i] <= internals[j]) else internals[j]
        i += i < m and (j >= k or leaves[i] <= internals[j])
        j += not (i <= m and (j > k - 1 or (i - 1 < m and leaves[i - 1] <= internals[j - (not (i <= m and (j > k - 1 or (i - 1 < m and leaves[i - 1] <= internals[j - 1])))] if j else 10**30))))
        s = a + b
        internals[k] = s
        total += s
        k += 1

    return {"encoded_length": total, "decoded": text}