ABC326の回
参考リンク
A-問題
A.py
X,Y = map(int,input().split())
if (X < Y) and (Y - X) >= 3:
print("No")
elif (X > Y) and (X - Y) >= 4:
print("No")
else:
print("Yes")
B-問題
B.py
# 条件に合う場合にTrueを返す関数
def like(X):
W = str(X) # 文字列に一度変換
A = int(W[0])
B = int(W[1])
C = int(W[2])
if A * B == C:
return True
# 入力
N = int(input())
for i in range(N,920):
if like(i) :
print(i)
exit()
C-問題
本番は、計算量が大きすぎてTLEを解決できませんでした。
ポイント
・enumerate関数で、リストのインデックスと値を同時に取り扱う
・bisect_leftを用いて二分探索し計算量を効率化する
c.py
from bisect import bisect_left
import math,sys,datetime,random,glob,os,re,bisect
N,M = map(int,input().split())
A = list(map(int, input().split()))
A.sort()
ans = 0
# enumerate関数で、リストのインデックスと値を同時にループする
for i, a in enumerate(A):
# 二分探索で左から最初に該当する値のインデックスPを取得する
P = bisect_left(A, M + a)
ans = max(ans, P-i)
print(ans)