結果
問題 |
No.482 あなたの名は
|
ユーザー |
![]() |
提出日時 | 2017-11-29 04:22:08 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 216 ms / 2,000 ms |
コード長 | 655 bytes |
コンパイル時間 | 214 ms |
コンパイル使用メモリ | 12,416 KB |
実行使用メモリ | 29,580 KB |
最終ジャッジ日時 | 2024-11-27 13:54:57 |
合計ジャッジ時間 | 4,864 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
ソースコード
N,K=[int(i) for i in input().split()] D=[int(i) for i in input().split()] D.insert(0,0) # print(D) is_refed=[False for i in range(N+1)] #最小回数の導出 min_swap_num=0 for i in range(1,N+1): # print(i,is_refed) if is_refed[i]==True: continue tmp=i zyunkai_list_len=0 while(1): zyunkai_list_len+=1 is_refed[tmp]=True if D[tmp]==i: min_swap_num+=zyunkai_list_len-1 break tmp=D[tmp] # print(min_swap_num) if K<min_swap_num: print('NO') elif K==min_swap_num: print('YES') else: if (K-min_swap_num)%2==0: print('YES') else: print('NO')