ABC134 C - Exception Handling
備忘録
問題
回答
import sys import os import copy def main(): if os.getenv("LOCAL"): sys.stdin = open("input.txt", "r") N = int(sys.stdin.readline().rstrip()) A = [int(sys.stdin.readline().rstrip()) for _ in range(N)] B = copy.copy(A) A.sort(reverse=True) f = A[0] s = A[1] for n in range(N): t = B[n] if f == t: print(s) else: print(f) if __name__ == '__main__': main()
考え方
長さN
の整数列A
で、整数列のある要素が一つ除かれた時の最大値は、
常に下記の2パターン。
- 整数列
A
の最大値 - 整数列
A
の2番目に大きい値
そのため、あらかじめ、整数列の最大値と2番目に大きい値を取り出しておき、
整数列を上から順に
- 最大値と一致した場合は2番目に大きい値を出力
- 最大値と一致しない場合は最大値を出力
することで、回答することが出来る。
ちなみに、slice
で頑張るとLTE
になる。。。