何も考えず、書いて WA / TLE。
abc134c_ng.py
N = int(input())
A = []
for _ in range(N):
a = int(input())
A.append(a)
for i in range(N):#O(2*10^5)
if i != N-1:
print(max(A[i+1:]))#max O(2*10^5-1)
#↑ココ1
else:
print(max(A[:N-1]))#max O(2*10^5-1)
#↑ココ2
ココ1 / ココ2 にあるように Ai 以降 から最大値を抜き取っているが
問題の趣旨は Ai を除く全ての要素の中で最大値 を望んでいる。そりゃ WA なるわ。
もう一つ、計算量だ。上記コメントを眺めてもらえれば分かると思う。
っというわけで 反省した。
事前に最大値を求めて、Ai < maximum であれば maximum を出せばよい。
Ai == maximum であれば、それより小さい値を出せばいい。
abc134c_ok.py
N = int(input())
A = []
for _ in range(N):
a = int(input())
A.append(a)
B = sorted(A)
for i in range(N):
if A[i] != B[-1]:
print(B[-1]) #maximum
else:
print(B[-2]) #maximum より一つ小さい値
問題文を正しくとらえる。
基本ではあるが、非常に大切であると改めて学んだ。