Submission #1132358

#TimeUsernameProblemLanguageResultExecution timeMemory
1132358stdfloat"The Lyuboyn" code (IZhO19_lyuboyn)C++20
100 / 100
135 ms27188 KiB
#include <bits/stdc++.h>
using namespace std;

int n, k, t, z;

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) {
		int 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);

	reverse(u.begin(), u.end());

	f(1);
}
#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...