magnel
@magnel

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

TLEの回避について AtCoder

解決したいこと

TLEの回避について

atcoderに挑戦している初心者です。
先日の「ユニークビジョンプログラミングコンテスト2024 クリスマス(AtCoder Beginner Contest 385)」
のC問題がTLEになってしまいます。

解決方法を教えて頂きたいです。
(Qiitaも初めてなので聞き方があっているか教えて頂きたいです)

該当するソースコード

n = int(input())
h = list(map(int,input().split()))
lastmax = 0
for i in range(n): #開始するindex
  for j in range(1,n-1): #等間隔j
  
    nowmax = 1 #このループの最大count
  
    space = j #間隔を保存
    
    if space + i < n: #範囲外にならないように
      nowh = h[i] #現在のh
      nexth = h[space + i] #次のh
    else:
      break #範囲外になるなら飛ばす
    
    while nowh == nexth: #次のhが現在のhと等しい かつ
    
      if (space+j) + i < n: #範囲外エラー回避
        nowh = nexth#現在のhを次のhに
        space += j #jは等間隔なので space+j
        nexth = h[space + i] #次のhをspace更新後に設定
      else:
        nowmax += 1
        break
      
      nowmax += 1 #最大countを進める
    
    lastmax = max(nowmax,lastmax) #最大記録を更新

print(lastmax)
      

自分で試したこと

breakで飛ばせば出来そうな気がするのですが、まだ解決できていません

0

1Answer

Your answer might help someone💌