ABC243 C - Collision 2
atcoder.jp
愚直に解こうとすると時間内に処理を終えることができずTLEになるので、
Yをキーとした、
Lの中で一番Xが大きいもの(left_max)、Rの中で一番Xが小さいもの(right_min)のみで、
解けば実行時間の制限にひっかかることなく処理を終えれます
あとは、どんな時にYesとなるか条件を書けば無事ACです
and 以降を忘れると、
X = 1, 2, 3, 4 Y = 1, 1, 1, 1 S = LLRR
こんな時にもYesを出力しちゃうので、忘れないように
解答
N = int(input()) X,Y = [],[] for _ in range(N): x,y = map(int,input().split()) X.append(x) Y.append(y) S = input() left_max, right_min = dict(),dict() for i in range(N): if S[i] == 'R': if Y[i] in right_min: right_min[Y[i]] = min(X[i], right_min[Y[i]]) else: right_min[Y[i]] = X[i] else: if Y[i] in left_max: left_max[Y[i]] = max(X[i], left_max[Y[i]]) else: left_max[Y[i]] = X[i] if S[i] == 'R': if Y[i] in left_max and right_min[Y[i]] < left_max[Y[i]]: print('Yes') exit() else: if Y[i] in right_min and right_min[Y[i]] < left_max[Y[i]]: print('Yes') exit() print('No')