Submission #20133410


Source Code Expand

import sys
import numpy as np

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

def from_read(dtype=np.int64):
    return np.fromstring(read().decode(), dtype=dtype, sep=' ')


def from_readline(dtype=np.int64):
    return np.fromstring(readline().decode(), dtype=dtype, sep=' ')


def output(ANS):
    print(len(ANS))
    for i in ANS:
        print(i + 1)

def check(A, ANS):
    A = A.copy()
    for i in ANS:
        A[:i] = A[:i][::-1]
        A[i + 1:] = A[i + 1:][::-1]
    for i in range(len(A)):
        assert A[i] == i

def attempt(A, t):
    N = len(A)
    A = A.copy()
    ANS = []

    def ope(i):
        ANS.append(i)
        A[:i] = A[:i][::-1]
        A[i + 1:] = A[i + 1:][::-1]

    for _ in range(9900 - 2 * N - t):
        i = np.random.randint(0, N)
        ope(i)

    i = np.where(A == 0)[0][0]
    if i != N - 1:
        ope(i + 1)
        L, R = 1, 0
    else:
        L, R = 0, 1

    while L < N and R < N:
        if L > 0:
            # 左に、L-1, ..., 1, 0 というのができている
            k = np.where(A == L)[0][0]
            if k < N - 1:
                ope(k)
                ope(k + 1)
                L += 1
            else:
                ope(k)
                L, R = 0, L + 1
        elif R > 0:
            # 右に、0,1,...,R-1 というのができている
            k = np.where(A == R)[0][0]
            if k > 0:
                ope(k)
                ope(k - 1)
                R += 1
            else:
                ope(0)
                L, R = R + 1, 0
    if R == N:
        return True, ANS
    else:
        return False, ANS

def main(A):
    N = len(A)
    A = A - 1
    for t in range(10):
        ok, ANS = attempt(A, t)
        if ok:
            check(A, ANS)
            output(ANS)
            return
    print(-1)

A = from_read()[1:]

main(A)

Submission Info

Submission Time
Task I - ツインリバース
User maspy
Language Python (3.8.2)
Score 100
Code Size 1974 Byte
Status AC
Exec Time 744 ms
Memory 28008 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 48
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt
Case Name Status Exec Time Memory
sample_01.txt AC 280 ms 27392 KiB
sample_02.txt AC 534 ms 27344 KiB
sample_03.txt AC 217 ms 27428 KiB
test_01.txt AC 158 ms 27208 KiB
test_02.txt AC 167 ms 27384 KiB
test_03.txt AC 527 ms 27224 KiB
test_04.txt AC 215 ms 27160 KiB
test_05.txt AC 306 ms 27376 KiB
test_06.txt AC 214 ms 27420 KiB
test_07.txt AC 342 ms 27576 KiB
test_08.txt AC 173 ms 27456 KiB
test_09.txt AC 214 ms 27400 KiB
test_10.txt AC 171 ms 27148 KiB
test_11.txt AC 174 ms 27300 KiB
test_12.txt AC 221 ms 27268 KiB
test_13.txt AC 219 ms 27368 KiB
test_14.txt AC 219 ms 27456 KiB
test_15.txt AC 279 ms 28000 KiB
test_16.txt AC 335 ms 27832 KiB
test_17.txt AC 217 ms 27580 KiB
test_18.txt AC 215 ms 27764 KiB
test_19.txt AC 725 ms 27916 KiB
test_20.txt AC 730 ms 27824 KiB
test_21.txt AC 744 ms 27932 KiB
test_22.txt AC 279 ms 27584 KiB
test_23.txt AC 340 ms 27804 KiB
test_24.txt AC 278 ms 28008 KiB
test_25.txt AC 214 ms 27672 KiB
test_26.txt AC 220 ms 27588 KiB
test_27.txt AC 216 ms 27616 KiB
test_28.txt AC 284 ms 27820 KiB
test_29.txt AC 278 ms 27828 KiB
test_30.txt AC 345 ms 27796 KiB
test_31.txt AC 281 ms 27916 KiB
test_32.txt AC 217 ms 27544 KiB
test_33.txt AC 729 ms 27600 KiB
test_34.txt AC 218 ms 27544 KiB
test_35.txt AC 219 ms 27500 KiB
test_36.txt AC 215 ms 27760 KiB
test_37.txt AC 280 ms 27688 KiB
test_38.txt AC 280 ms 27812 KiB
test_39.txt AC 218 ms 27532 KiB
test_40.txt AC 219 ms 27752 KiB
test_41.txt AC 731 ms 27588 KiB
test_42.txt AC 219 ms 27396 KiB
test_43.txt AC 221 ms 27356 KiB
test_44.txt AC 219 ms 27584 KiB
test_45.txt AC 277 ms 27828 KiB