Skip to content

ABC-371

A

URLURL\:\to https://atcoder.jp/contests/abc371/tasks/abc371_a

#だるい

def solve():
s = String().content
if set(s) in [{'<'}, {'>'}]: print('B')
elif s[0:1+1] in [('<', '>'), ('>', '<')]: print('A')
else: print('C')

解法

SAB, SAC, SBCS_{AB}, \ S_{AC},\ S_{BC} がすべて ’<’ か ’>’ -> B 順序関係は必ず満たされると保証されているので SAB, SACS_{AB}, \ S_{AC} が (’<’, ’>’) か (’>’, ’<’) -> A それ以外 \to C

を出力すればいい。


B

URLURL\:\to https://atcoder.jp/contests/abc371/tasks/abc371_b

#愚直

def solve():
n,m = Integer().content
s = set(range(1, n+1))
for _ in range(m):
num, sex = String().content
num = int(num)
if sex=='M' and num in s:
s-={num}
print("Yes")
else: print("No")

解法

長男が生まれてない家を set で管理。条件に条件が真なら remove して “Yes”, 偽なら “No”


C

解法


D

URLURL\:\to https://atcoder.jp/contests/abc371/tasks/abc371_d

#二分探索 #累積和

n = Integer().content
x = IntegerList()
p = IntegerList().prefixSum1D()
for _ in range(Integer().content):
l,r = Integer().content
xl,xr = x.upperBound(l-1), x.upperBound(r)
print(p[xr]-p[xl])

解法

PP に累積和を適応させ、クエリごとに Li1L_{i}-1RiR_{i} に対応する位置を XXUpperBound することで求めだし、PRiPLi1P_{R_{i}}-P_{L_{i}-1} を出力する。


E

解法