#include <bits/stdc++.h>
using namespace std;
int n, k, t, s;
string st;
vector<int> gray_code(int n) {
if(n==1) return {0, 1};
vector<int> A = gray_code(n-1), B = A;
while(!B.empty()) {
A.push_back(B.back()^(1<<(n-1)));
B.pop_back();
}
return A;
}
vector<int> solve(int n, int k) {
if(n==k+1) {
vector<int> A = gray_code(n);
for(int i=1; i<A.size(); i+=2) A[i] = A[i]^((1<<n)-1);
return A;
}
vector<int> A = solve(n-1, k), B = A;
while(!B.empty()) {
A.push_back(B.back()^((1<<n)-1)^((1<<(n-k))-1));
B.pop_back();
}
return A;
}
int32_t main() {
cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);
cin >> n >> k >> t >> st;
for(int i=0; i<n; i++) s ^= (st[i]-'0')<<i;
if(k%2==0) {
cout << "-1\n";
return 0;
}
vector<int> ans = solve(n, k);
for(int &i : ans) i ^= s;
cout << ans.size() << '\n';
for(int i : ans) {
for(int j=0; j<n; j++)
cout << (i>>j&1);
cout << '\n';
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |