제출 #1144920

#제출 시각아이디문제언어결과실행 시간메모리
1144920Robert_juniorSnake Escaping (JOI18_snake_escaping)C++20
5 / 100
2091 ms18280 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define ins insert #define all(x) x.begin(), x.end() #define F first #define S second const int N = (1<<21); int dp[N], dp1[N]; int a[N]; void solve(){ int L, q; string s; cin>>L>>q>>s; for(int i = 0; i < s.size(); i++){ dp[i] = dp1[i] = s[i] - '0'; } for(int i = 0; i < L; i++){ for(int msk = 0; msk < (1<<L); msk++){ if((msk>>i) & 1){ dp[(msk ^ (1<<i))] += dp[msk]; } } } while(q--){ string t; cin>>t; reverse(all(t)); int cnt[3] = {0, 0, 0}; for(auto it : t){ if(it == '?') cnt[2]++; else cnt[it - '0']++; } if(cnt[2] <= 10){ int ans = 0; int msk = 0; vector<int>v; for(int i = 0; i < L; i++){ if(t[i] == '1') msk |= (1<<i) ; else if(t[i] == '?') v.pb(i); } for(int msk1 = 0; msk1 < (1<<v.size()); msk1++){ int msk2 = msk; for(int i = 0; i < v.size(); i++){ if((msk1>>i) & 1){ msk2 |= (1<<v[i]); } } ans += s[msk2] - '0'; } cout<<ans<<'\n'; } else if(cnt[1] <= 6){ } else{ } } } signed main(){ ios_base :: sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t = 1; //cin>>t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...