Submission #911234

#TimeUsernameProblemLanguageResultExecution timeMemory
911234daoquanglinh2007"The Lyuboyn" code (IZhO19_lyuboyn)C++17
100 / 100
169 ms6604 KiB
#include <bits/stdc++.h>
using namespace std;

string bS;
int N, K, S, T;
vector <int> v, ans;

vector <int> build(int N){
	if (N == 1){
		vector <int> ans = {0, 1};
		return ans;
	}
	vector <int> a = build(N-1);
	for (int i = 0; i < (1<<(N-1)); i++){
		a.push_back((1<<(N-1))+a[(1<<(N-1))-1-i]);
	}
	return a;
}

vector <int> solve(int N, int K){
	if (K%2 == 0) return {};
	if (K == 1) return build(N);
	vector <int> tmp = solve(N-2, K-2), ans(0);
	for (int i = 0; i < (1<<(N-2)); i++){
		if (i&1) ans.push_back((tmp[i]<<2)+3);
		else ans.push_back(tmp[i]<<2);
	}
	for (int i = 0; i < (1<<(N-2)); i++){
		if (i&1) ans.push_back(((tmp[i]<<2)^4)+1);
		else ans.push_back(((tmp[i]<<2)^4)+2);
	}
	for (int i = 0; i < (1<<(N-2)); i++){
		if (i&1) ans.push_back(tmp[i]<<2);
		else ans.push_back((tmp[i]<<2)+3);
	}
	for (int i = 0; i < (1<<(N-2)); i++){
		if (i&1) ans.push_back(((tmp[i]<<2)^4)+2);
		else ans.push_back(((tmp[i]<<2)^4)+1);
	}
	return ans;
}

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin >> N >> K >> T >> bS;
	for (int i = 0; i < N; i++)
		if (bS[i] == '1') S += (1<<(N-1-i));
		
	vector <int> ans = solve(N, K);
	if (ans.empty()){
		cout << "-1\n";
		return 0;
	}
	cout << (1<<N) << '\n';
	for (int &x : ans){
		x ^= S;
		for (int i = N-1; i >= 0; i--)
			cout << ((x>>i)&1);
		cout << '\n';
	}
	return 0;
}
#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...