Atcoder ABC301 D Bitmaskが分かりません
https://atcoder.jp/contests/abc301/tasks/abc301_d
解説を参考に上から貪欲を行うコードを書いたのですが、WAになります。
以下のコードの間違っているところを教えてください。
前提
c++
上から貪欲を行っています。
該当のソースコード
c++
1#include <iostream> 2#include <bits/stdc++.h> 3using namespace std; 4int main(void){ 5 string S; 6 long long N; 7 cin >> S >> N; 8 9 long long ans = 0; 10 11 for (int i = 0; i < S.size(); i++) { 12 if (S[i] == '1') { 13 ans |= (1 << (S.size() - i - 1)); 14 } else { 15 ans |= (0 << (S.size() - i - 1)); 16 } 17 } 18 19 if (ans > N) { 20 cout << -1 << endl; 21 } else { 22 for (int i = 0; i < S.size(); i++) { 23 if (S[i] == '?'){ 24 if((ans|(1 << (S.size() - i - 1))) <= N) { 25 ans |= (1 << (S.size() - i - 1)); 26 } 27 } 28 } 29 cout << ans << endl; 30 } 31 return 0; 32}
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/06/01 09:43