Submission #1133974

#TimeUsernameProblemLanguageResultExecution timeMemory
1133974Muhammet"The Lyuboyn" code (IZhO19_lyuboyn)C++20
0 / 100
1095 ms3720 KiB
#include <bits/stdc++.h> using namespace std; #define SZ(s) (int)s.size() #define ll long long const int N = 5e5 + 5; int n, k, t, a[N], sz, vis[N]; map <pair<int,int>, bool> dp; int f(int ind){ if(dp.find({ind,a[ind-1]}) != dp.end()) return dp[{ind,a[ind-1]}]; if(ind == (1<<n)+1) return (__builtin_popcount(a[ind-1]^a[1]) == k); for(int i = 0; i < (1<<sz); i++){ if(__builtin_popcount(a[ind-1]^i) == k and !vis[i]){ a[ind] = i; vis[i] = true; if(f(ind+1)){ dp[{ind+1,a[ind]}] = true; return true; } vis[i] = false; } } dp[{ind,a[ind-1]}] = false; return false; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); string s; cin >> n >> k >> t >> s; ll x = 0; sz = SZ(s); int cnt = -1; for(int i = sz-1; i >= 0; i--){ cnt++; if(s[i] == '0') continue; x += (1<<cnt); } a[1] = x; vis[x] = true; if(!f(2)){ cout << "-1\n"; return 0; } cout << (1<<n) << '\n'; for(int i = 1; i <= (1<<n); i++){ vector <int> v; while(a[i]){ v.push_back(a[i]%2); a[i] /= 2; } while(SZ(v) < sz) v.push_back(0); reverse(v.begin(), v.end()); for(auto j : v){ cout << j; } cout << '\n'; } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...