結果
| 問題 |
No.1311 Reverse Permutation Index
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2020-12-08 01:20:46 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 29 ms / 1,500 ms |
| コード長 | 683 bytes |
| コンパイル時間 | 104 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2024-09-17 14:14:28 |
| 合計ジャッジ時間 | 763 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 6 |
ソースコード
N,S=map(int,input().split())
F=[1,1]
for i in range(1,20):
F.append(F[-1]*i)
def calc(A):
if len(A)==1:
return 0
compression_dict={a: ind for ind, a in enumerate(sorted(set(A)))}
A=[compression_dict[a] for a in A]
#print(A)
return F[len(A)]*A[0]+calc(A[1:])
A=[]
USE=[0]*S
for i in range(S):
uind=0
while USE[uind]==1:
uind+=1
while N:
if N>=F[S-i]:
uind+=1
N-=F[S-i]
else:
break
while USE[uind]==1:
uind+=1
A.append(uind)
USE[uind]=1
#print(A)
B=[]
for i in range(S):
B.append(A.index(i))
print(calc(B))
titia