def main():
N = int(input())
AS = list(map(int, input().split()))
BS = list(map(int, input().split()))
maxAS = []
x = 0
for i in range(N):
x = max(x, AS[i])
maxAS.append(x)
ret = AS[0] * BS[0]
print(ret)
for i in range(1, N):
ret = max(ret, maxAS[i] * BS[i])
print(ret)
def main():
N, K = map(int, input().split())
AS = list(map(int, input().split()))
from collections import Counter
count = Counter(AS)
ret = 0
while count[0] > 0 and K > 0: # (1)
i = 0
K -= 1
while count[i] > 0:
ret += 1
count[i] -= 1
i += 1
print(ret)
REが出てるのはpowに負の値を入れられるのがPython3.8からなのを忘れてたせい see mod Pでの逆元
タプルをキーにした辞書を使っててTLEしたので、配列に変えた。
W+2は、1オリジンなのと、端で条件分岐しないで良いように1マス広げとくのの組み合わせ
python
def main():
MOD = 998_244_353
H, W, K = map(int, input().split())
CS = [0] * ((H + 2) * (W + 2))
for _k in range(K):
h, w, c = input().strip().split()
CS[(int(h) * (W + 2) + int(w))] = ord(c)
table = [0] * ((H + 2) * (W + 2))
v = table[1 + (W + 2)] = 1
for h in range(1, H + 1):
for w in range(1, W + 1):
pos = h * (W + 2) + w
v = table[pos] % MOD
c = CS[pos]
if c == 88: # "X":
table[pos + 1] += v * 3
table[pos + (W + 2)] += v * 3
elif c == 68: # "D":
table[pos + (W + 2)] += v * 3
elif c == 82: # "R":
table[pos + 1] += v * 3
else:
table[pos + 1] += v * 2
table[pos + (W + 2)] += v * 2
ret = table[H * (W + 2) + W] % MOD
LEN = (H + W - 2)
NEGK = H * W - K
ret *= pow(3, (MOD - 1 - (LEN - NEGK)), MOD)
ret %= MOD
print(ret)
def main():
N = int(input())
group = []
for i in range(N):
P = 2 ** (2 ** i)
group = [x * (P + 1) for x in group]
group.append(P - 1)
K = 2 ** N - 1
print(K)
for i in range(1, K + 1):
x = 0
for j in range(N):
if (1 << j) & i:
x = x ^ group[j]
s = f"{x:0256b}"[-(2 ** N):]
s = s.replace("0", "A").replace("1", "B")
print(s)