Submission #1132340

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

using ll = long long;

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

int rnd(int l, int r) {
	return l + rng() % (r - l + 1);
}

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);
	}

	// shuffle(u.begin(), u.end(), rng);
	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;

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

	cout << -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...