#A
Aにしては若干ややこしい
S, T = input().split()
A, B = map(int, input().split())
U = input()
if U == S:
print(A - 1, B)
else:
print(A, B - 1)
#B
制約の縛りも特にない。Aより簡単な気がする
S = list(input())
for _ in range(len(S)):
print("x", end='')
#C
Counterはやっぱり強い。YESを小文字で書いてしまい1WA。この手のミスは今後気を付けたい(atcoderさん、できればどっちかに統一して。。。)
from collections import Counter
N = int(input())
A = Counter(map(int, input().split()))
A = A.values()
for a in A:
if a != 1:
print("NO")
exit()
print("YES")
#D
期待値の線形性を利用。アルゴリズムは尺取り法の知識が必要。tmp_ansの更新を忘れておりバグ取りに時間がかかった。
N, K = map(int, input().split())
p = list(map(int, input().split()))
Expected_val = []
for val in p:
sum_val = (val * (val + 1)) // 2
Expected_val.append(sum_val / val)
# print(Expected_val)
left = 0
right = K
ans = sum(Expected_val[left:right])
tmp_ans = ans
# print(ans)
for i in range(N - K):
tmp_ans = tmp_ans - Expected_val[left + i] + Expected_val[right + i]
if tmp_ans > ans:
ans = tmp_ans
print(ans)
#E
桁DP。判別方法は入力のでかすぎる値が合図。前に解いたのが10月だったのでコードを発掘。必要箇所をいじいじし無事AC。これは嬉しい。地球に生まれてよかった。
from functools import lru_cache
N = input()
K = int(input())
## lru_cacheを使ってメモ化
@lru_cache(maxsize=None)
def rec(k,tight,sum_val):
# 最後まで探索した時、問題条件に応じて1 or 0を返す
if k == len(N):
if sum_val == K and sum_val != 0:
return 1
else:
return 0
# 現在の桁がtightであるか否かで終了する条件を変更する
x = int(N[k])
if tight:
r = x
else:
r = 9
res = 0
for i in range(r + 1):
if i == 0:
res += rec(k + 1 ,tight and i == r, sum_val)
else:
res += rec(k + 1, tight and i == r, sum_val + 1)
return res
print(rec(0 , True , 0))
#F
勉強中。けんちょんさんが謎の公式を呟いていたので調査なう。$C(r, r) + C(r+1, r) + ... + C(n, r) = C(n+1, r+1)$