スパークリング黒ココア/ABC301 D - Bitmask

Created Sat, 13 May 2023 Modified Tue, 26 Sep 2023 09:13:30 +0000
  • Sのうち$1$になっている桁は、確定で$2^n$使う!
  • $?$になってる桁のうち、左から順に貪欲に1にしたいよね!ハイ終わり!
S = input()
N = int(input())
  
num = 0
L = []
  
for i, c in enumerate(S[::-1]):
    if c == '1':
        num += 2 ** i
    elif c == '?':
        L.append(2 ** i)

L.sort(reverse=True)
for add_num in L:
	if num + add_num <= N:
	    num += add_num
  
print(num if num <= N else -1)