結果
| 問題 |
No.1884 Sequence
|
| コンテスト | |
| ユーザー |
flora
|
| 提出日時 | 2022-03-25 21:54:53 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,259 bytes |
| コンパイル時間 | 1,224 ms |
| コンパイル使用メモリ | 81,792 KB |
| 実行使用メモリ | 118,252 KB |
| 最終ジャッジ日時 | 2024-10-14 05:51:17 |
| 合計ジャッジ時間 | 8,798 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 34 WA * 2 TLE * 1 -- * 3 |
ソースコード
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()
if len(A)<2:
print("Yes")
else:
#この場合はA[0],A[1]をみて、ありうる等差を全部網羅する
for z in range(zero+1):
#z個のzをA[0],A[1]の間にいれて等差数列を作る
if (A[1]-A[0])%(z+1)==0:
#z+1で割り切れるときのみ考えればOK
#これが等差
r=(A[1]-A[0])//(z+1)
else:
continue
#あとはrずつ足していって、等差数列が構成できるかを見る
idx=0
flag=True
while idx<len(A)-1:
for zz in range(zero+1):
#次の項といまの項の間に1つ以上の0をいれて等差数列にできますか?
if A[idx]+(zz+1)*r==A[idx+1]:
#この場合等差数列としてOK
#zeroをへらす
zero-=zz
if zero<0:
#zeroが負なのはだめなので
flag=False
idx+=1
break
else:
#見つからなかったのでこのrではダメですね
flag=False
if not flag:
break
if flag:
print("Yes")
exit()
print("No")
flora