結果
問題 | No.74 貯金箱の退屈 |
ユーザー |
|
提出日時 | 2014-11-25 19:00:41 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 33 ms / 5,000 ms |
コード長 | 524 bytes |
コンパイル時間 | 349 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 10,880 KB |
最終ジャッジ日時 | 2024-12-23 13:31:39 |
合計ジャッジ時間 | 2,552 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 30 |
ソースコード
n=int(input()) d=map(int,input().split()) w=map(int,input().split()) uf=list(range(n)) rv=[False]*n def f(i): if i==uf[i]: return i else: uf[i]=f(uf[i]) return uf[i] def u(a,b): uf[f(a)]=f(b) for i,di in enumerate(d): a,b=(i+di)%n,(i-di)%n u(a,b) if a==b: rv[a]=True for i,b in enumerate(rv): j=f(i) if b: rv[j]=True out=[i for i,j in zip(uf,w) if j==0] print("Yes" if all([rv[i] or out.count(i)%2==0 for i in set(uf)]) else "No")