Submission #538619

#TimeUsernameProblemLanguageResultExecution timeMemory
538619cig32"The Lyuboyn" code (IZhO19_lyuboyn)C++17
19 / 100
170 ms9068 KiB
#include "bits/stdc++.h" using namespace std; const int MAXN = 2e5 + 10; const int MOD = 1e9 + 7; #define int long long #define ll __int128 mt19937_64 rng((int)std::chrono::steady_clock::now().time_since_epoch().count()); int rnd(int x, int y) { int u = uniform_int_distribution<int>(x, y)(rng); return u; } ll read() { // read int128 int x; cin >> x; return (ll)x; } long long bm(long long b, long long p) { if(p==0) return 1 % MOD; long long r = bm(b, p >> 1); if(p&1) return (((r*r) % MOD) * b) % MOD; return (r*r) % MOD; } long long inv(long long b) { return bm(b, MOD-2); } long long f[MAXN]; long long nCr(int n, int r) { long long ans = f[n]; ans *= inv(f[r]); ans %= MOD; ans *= inv(f[n-r]); ans %= MOD; return ans; } void precomp() { for(int i=0; i<MAXN; i++) f[i] = (i == 0 ? 1 % MOD : (f[i-1] * i) % MOD); } void solve(int tc) { int n, k, t; cin >> n >> k >> t; string s; cin >> s; vector<int> ans; int xorsum = 0; ans.push_back(0); vector<int> tog; int cur = (1<<k) - 1; for(int i=1; i<=n; i++) { tog.push_back(cur); if(cur >= (1 << (n-1))) { cur -= (1 << (n-1)); cur <<= 1; cur += 1; } else { cur <<= 1; } } for(int i=1; i<(1<<n); i++) { xorsum ^= tog[(int)log2(i & -i)]; ans.push_back(xorsum); //cout << tog[(int)log2(i & -i)] << ' '; //if(i % 8 == 0) cout << '\n'; } //cout << '\n'; //cout << "tog[]: "; //for(int i=0; i<n; i++) cout << tog[i] << ' '; //cout << '\n'; //freopen("uwu.txt", "w", stdout); if(n % k == 0 && k > 1) { cout << "-1\n"; return; } if(k % 2 == 0) { cout << "-1\n"; return; } cout << (1<<n) << '\n'; int pos; int val = 0; for(int i=0; i<s.size(); i++) { val *= 2; val += (s[i] == '1'); } for(int i=0; i<ans.size(); i++) { if(ans[i] == val) pos = i; } for(int i=pos; i<pos+ans.size(); i++) { //cout << ans[i % (1<<n)] << "\n"; //continue; for(int j=n-1; j>=0; j--) { if(ans[i % (1<<n)] & (1<<j)) cout << "1"; else cout << "0"; } cout << '\n'; } } int32_t main(){ precomp(); ios::sync_with_stdio(0); cin.tie(0); int t = 1; //cin >> t; for(int i=1; i<=t; i++) solve(i); } /* 17 3 0 0000 7 14 19 25 28 7 14 7 19 7 14 7 25 7 14 7 19 7 14 7 28 7 14 7 19 7 14 7 25 7 14 7 19 7 14 7 0 7 12 11 6 1 10 13 3 4 15 8 5 2 9 14 7 12 1 15 8 3 14 0 7 12 1 15 8 3 14 7 (0111) 13 (1101) 11 (1011) 7 (0111) 14 (1110) 13 (1101) 14 (1110) 7 (0111) 14 (1110) 13 (1101) 11 (1011) 13 (1101) 7 (0111) 13 (1101) 14 (1110) */

Compilation message (stderr)

lyuboyn.cpp: In function 'void solve(long long int)':
lyuboyn.cpp:74:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |   for(int i=0; i<s.size(); i++) {
      |                ~^~~~~~~~~
lyuboyn.cpp:78:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   78 |   for(int i=0; i<ans.size(); i++) {
      |                ~^~~~~~~~~~~
lyuboyn.cpp:81:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'long long unsigned int' [-Wsign-compare]
   81 |   for(int i=pos; i<pos+ans.size(); i++) {
      |                  ~^~~~~~~~~~~~~~~
lyuboyn.cpp:81:20: warning: 'pos' may be used uninitialized in this function [-Wmaybe-uninitialized]
   81 |   for(int i=pos; i<pos+ans.size(); i++) {
      |                    ^~~
#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...