Submission #1129995

#TimeUsernameProblemLanguageResultExecution timeMemory
1129995magikrapSnake Escaping (JOI18_snake_escaping)C++20
5 / 100
2093 ms5604 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define MOD 998244353 #define MOD2 1000000007 #define vt vector #define endl '\n' #define pb push_back #define pf push_front #define all(x) x.begin(),x.end() #define sz(x) (int)((x).size()) #define uset unordered_set #define umap unordered_map #define mset multiset #define fi first #define se second #define rep(i,a,b) for(int i=a;i<b;i++) #define rrep(i,a,b) for(int i=a;i>=b;i--) #define each(i,a) for(auto &i:a) struct pii { int x, y; bool operator<(const pii &a) const { return x == a.x ? y < a.y : x < a.x; } bool operator>(const pii &a) const { return x == a.x ? y > a.y : x > a.x; } bool operator==(const pii &a) const { return x == a.x && y == a.y; } bool operator!=(const pii &a) const { return x != a.x || y != a.y; } pii operator+(const pii &a) const { return {x+a.x, y+a.y}; } pii operator-(const pii &a) const { return {x-a.x, y-a.y}; } pii operator*(const int &a) const { return {x*a, y*a}; } pii operator/(const int &a) const { return {x/a, y/a}; } }; struct pll { ll x, y; bool operator<(const pll &a) const { return x == a.x ? y < a.y : x < a.x; } bool operator>(const pll &a) const { return x == a.x ? y > a.y : x > a.x; } bool operator==(const pll &a) const { return x == a.x && y == a.y; } bool operator!=(const pll &a) const { return x != a.x || y != a.y; } pll operator+(const pll &a) const { return {x+a.x, y+a.y}; } pll operator-(const pll &a) const { return {x-a.x, y-a.y}; } pll operator*(const ll &a) const { return {x*a, y*a}; } pll operator/(const ll &a) const { return {x/a, y/a}; } }; template<class T> bool ckmin(T& a, const T& b) { return b < a ? a = b, 1 : 0; } template<class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; } int N, Q; int a[1<<20]; int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> N >> Q; string s; cin >> s; rep(i,0,1<<N) { a[i] = s[i]-'0'; } while (Q--) { string t; cin >> t; int ans = 0; rep(i,0,1<<N) { bool g = 1; rep(k,0,N) { if (t[k] == '0' && (i&(1<<(N-1-k))) != 0) { g = 0; break; } else if (t[k] == '1' && (i&(1<<(N-1-k))) == 0) { g = 0; break; } } if (g) ans += a[i]; } cout << ans << endl; } return 0; }
#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...