Submission #911221

# Submission time Handle Problem Language Result Execution time Memory
911221 2024-01-18T16:07:33 Z daoquanglinh2007 "The Lyuboyn" code (IZhO19_lyuboyn) C++17
0 / 100
175 ms 262144 KB
#include <bits/stdc++.h>
using namespace std;

#define flipbit(x, i) x ^= (1<<(i))

const int a[] = {0, 1, 3, 2, 6, 7, 5, 4};

string bS;
int N, K, S, T;
vector <int> v, ans;
int cnt[262144];

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){
	v = build(N);
	ans.clear();
	ans.push_back(0);
	for (int i = 1; i < (1<<N); i++){
		ans.push_back(ans[i-1]);
		for (int j = 0; j < N; j++)
			if (((v[i]^v[i-1])>>j)&1){
				for (int t = 0; t < K; t++)
					flipbit(ans[i], (j+t)%N);
			}
	}
	for (int i = 0; i < (1<<N); i++) cnt[i] = 0;
	bool ok = 1;
	for (int x : ans){
		if (cnt[x]){
			ok = 0;
			break;
		}
		cnt[x]++;
	}
	if (ok){
		return ans;
	}
	if (K%2 == 0) return {};
	if (N == 2*K){
		vector <int> tmp = solve(N-2, K), ans(0);
		for (int i = 0; i < (1<<N); i++){
			if (i == 0){
				ans.push_back(0);
				continue;
			}
			if (i&1) ans.push_back(ans.back()^((1<<K)-1));
			else if (i&3) ans.push_back(ans.back()^((1<<N)-(1<<K)));
			else ans.push_back(ans.back()^((tmp[i/4]^tmp[i/4-1])<<1));
		}
		return ans;
	}
	if (K == 3){
		vector <int> tmp = solve(N-3, 3), ans = tmp;
		for (int i = 1; i < 8; i++){
			int x = ans.back()&((1<<(N-3))-1);
			x ^= (1<<(N-4))+(1<<(N-5));
			for (int j = 0; j < (1<<(N-3)); j++)
				ans.push_back((a[i]<<(N-3))+(x^tmp[j]));
		}
		return ans;
	}
	return {};
}

int main(){
	freopen("LYUBOYN.inp", "r", stdin);
	freopen("LYUBOYN.out", "w", stdout);
	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;
}

Compilation message

lyuboyn.cpp: In function 'int main()':
lyuboyn.cpp:77:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   77 |  freopen("LYUBOYN.inp", "r", stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
lyuboyn.cpp:78:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   78 |  freopen("LYUBOYN.out", "w", stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Runtime error 170 ms 262144 KB Execution killed with signal 9
# Verdict Execution time Memory Grader output
1 Runtime error 173 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 165 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 169 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 175 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 175 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 169 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 169 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -