#include <bits/stdc++.h>
using namespace std;
int n, k, t, z, y;
vector<int> v, u;
vector<bool> vis;
void f(int x) {
if (x == z) {
if (t == 1 && __builtin_popcount(v[0] ^ v[z - 1]) != k) return;
cout << z << '\n';
for (auto i : v) {
for (int j = n - 1; j >= 0; j--)
cout << ((i >> j) & 1);
cout << '\n';
}
exit(false);
}
for (auto i : u) {
y = v.back() ^ i;
if (vis[y]) continue;
vis[y] = true;
v.push_back(y);
f(x + 1);
v.pop_back();
vis[y] = false;
}
}
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
string s;
cin >> n >> k >> t >> s;
if (!(k & 1)) return cout << -1, 0;
int x = 0;
for (int i = 0; i < n; i++)
x += (1 << (n - i - 1)) * (s[i] - '0');
z = 1 << n;
vis.assign(z, false);
vis[x] = true;
v.push_back(x);
for (int i = 0; i < z; i++)
if (__builtin_popcount(i) == k) u.push_back(i);
f(1);
}
# | 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... |