Submission #36268124


Source Code Expand

def solve():
    N=int(input())
    P=list(map(int,input().split()))

    def inversion(P):
        return [N+1-p for p in P]

    def next(P):
        S=[]
        for i in range(N-1,0,-1):
            S.append(P[i])
            if P[i-1]<P[i]:
                S.append(P[i-1])
                a=P[i-1]
                break

        P=P[:i-1]
        S.sort()
        for j,b in enumerate(S):
            if a<b:
                P.append(b)
                del S[j]
                break
        return P+S

    return inversion(next(inversion(P)))

#==================================================
print(*solve())

Submission Info

Submission Time
Task C - Previous Permutation
User Kazu1998k
Language PyPy3 (7.3.0)
Score 300
Code Size 649 Byte
Status AC
Exec Time 63 ms
Memory 62240 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 2
AC × 12
Set Name Test Cases
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, test_00.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
Case Name Status Exec Time Memory
example_00.txt AC 63 ms 61912 KiB
example_01.txt AC 51 ms 62008 KiB
test_00.txt AC 53 ms 62048 KiB
test_01.txt AC 50 ms 62068 KiB
test_02.txt AC 51 ms 62100 KiB
test_03.txt AC 48 ms 61812 KiB
test_04.txt AC 54 ms 62132 KiB
test_05.txt AC 51 ms 62000 KiB
test_06.txt AC 50 ms 62184 KiB
test_07.txt AC 52 ms 62240 KiB
test_08.txt AC 50 ms 61696 KiB
test_09.txt AC 54 ms 62060 KiB