Submission #1133971

#TimeUsernameProblemLanguageResultExecution timeMemory
1133971Muhammet"The Lyuboyn" code (IZhO19_lyuboyn)C++20
5 / 100
1096 ms2912 KiB
#include <bits/stdc++.h>
 
using namespace std;

#define SZ(s) (int)s.size()
#define ll long long

const int N = 5e5 + 5;

int n, k, t, a[N], sz, vis[N];

int f(int ind){
	if(ind == (1<<n)+1) return (__builtin_popcount(a[ind-1]^a[1]) == k);
	for(int i = 0; i < (1<<sz); i++){
		if(__builtin_popcount(a[ind-1]^i) == k and !vis[i]){
			a[ind] = i;
			vis[i] = true;
			if(f(ind+1)) return true;
			vis[i] = false;
		}
	}
	return false;
}

int main(){
	ios::sync_with_stdio(false); cin.tie(nullptr);

	string s;
	cin >> n >> k >> t >> s;
	ll x = 0;
	sz = SZ(s);
	int cnt = -1;
	for(int i = sz-1; i >= 0; i--){
		cnt++;
		if(s[i] == '0') continue;
		x += (1<<cnt);
	}
	a[1] = x;
	vis[x] = true;
	if(!f(2)){
		cout << "-1\n";
		return 0;
	}
	cout << (1<<n) << '\n';
	for(int i = 1; i <= (1<<n); i++){
		vector <int> v;
		while(a[i]){
			v.push_back(a[i]%2);
			a[i] /= 2;
		}
		while(SZ(v) < sz) v.push_back(0);
		reverse(v.begin(), v.end());
		for(auto j : v){
			cout << j;
		}
		cout << '\n';
	}
}
#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...