Submission #1133982

#TimeUsernameProblemLanguageResultExecution timeMemory
1133982Muhammet"The Lyuboyn" code (IZhO19_lyuboyn)C++20
5 / 100
1099 ms263160 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], b[N], y; vector <int> v; void f1(int x, int cnt){ if(x == sz){ int y1 = y; for(int i = 0; i < sz; i++){ if(b[i] == 1) y1 ^= (1<<i); } if(!vis[y1]) v.push_back(y1); return; } if(sz-x+cnt < k) return; f1(x+1,cnt); if(cnt == k) return; for(int i = 0; i < sz; i++){ if(b[i] == 0){ b[i] = 1; f1(x+1,cnt+1); b[i] = 0; } } } int f(int ind){ if(ind == (1<<n)+1) return (__builtin_popcount(a[ind-1]^a[1]) == k); y = a[ind-1]; f1(0, 0); vector <int> v1 = v; v.clear(); for(auto i : v1){ 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...