結果
| 問題 |
No.1884 Sequence
|
| コンテスト | |
| ユーザー |
flora
|
| 提出日時 | 2022-03-25 23:01:59 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,459 bytes |
| コンパイル時間 | 472 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 145,300 KB |
| 最終ジャッジ日時 | 2024-10-14 07:07:14 |
| 合計ジャッジ時間 | 6,935 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 WA * 2 RE * 11 |
ソースコード
from collections import Counter
N=int(input())
ori_A=list(map(int,input().split()))
#0を除いてソートしつつ0の数を覚えておく
#0にはできない
#あとは等差を決め打ちして確認すればいいのでは?
zero=0
A=[]
for a in ori_A:
if a==0:
zero+=1
else:
A.append(a)
A.sort()
B=[]
for i in range(len(A)-1):
B.append(A[i+1]-A[i])
cnt=Counter(B)
#差が2種類以上あるときは等差数列になっていません。
#差を増やすことはできないですが、zeroを使って差をへらすことはできるかもしれないです。具体的には差rがあったときはz個のzeroをつかってr//(z+1)に置き換えることができます。ただしこれは割り切れるときのみ可能です。
#zeroを使ってCounterの中身を全部最小にできるか考えましょう
#全部の差をtargetに一致させたいですね。
target=min(cnt.most_common())[0]
if len(cnt)<2:
print("Yes")
exit()
for r,c in cnt.items():
#rをtargetに一致させることができるかを考えますが、これは
z=r//target-1
if target*(z+1)==r:
#このときはz個のzeroをつかってrをtargetに書き換えられます同じのがc個あることに注意してください
zero-=c*z
if zero<0:
#zeroが足りなかったらだめ
print("No")
exit()
continue
else:
#これはもうrはtargetに一致させられない数なので
print("No")
exit()
print("Yes")
flora