LoginSignup
0
0

More than 1 year has passed since last update.

ABC134 C - Exception Handling から学んだ

Posted at

abc134_1.png
abc134_2.png

何も考えず、書いて 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 より一つ小さい値

問題文を正しくとらえる。
基本ではあるが、非常に大切であると改めて学んだ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0