Submission #1131979

#TimeUsernameProblemLanguageResultExecution timeMemory
1131979alexander707070"The Lyuboyn" code (IZhO19_lyuboyn)C++20
100 / 100
100 ms7612 KiB
#include<bits/stdc++.h> #define MAXN 100007 using namespace std; int n,k,t,start; string s; vector<int> seq,w; void grey_code(int bits){ seq={0}; for(int i=0;i<bits;i++){ int sz=(1<<i); for(int f=sz-1;f>=0;f--){ seq.push_back(seq[f]^(1<<i)); } } w.resize((1<<bits)); w[0]=seq[0]; for(int i=1;i<seq.size();i++){ w[i]=w[i-1]^((1<<bits)-1)^(seq[i]^seq[i-1]); } } void extend_code(int t){ for(int i=0;i<t;i++){ int sz=int(w.size()); int pos=-1; for(int f=0;f<sz;f++){ if(__builtin_popcount(w[f]^w[0])==k-1 and __builtin_popcount(w[(f+1)%sz]^w[sz-1])==k-1)pos=f; } if(pos!=-1){ for(int f=pos+1;f<=pos+sz;f++){ w.push_back(w[f%sz]^sz); } }else{ for(int f=0;f<sz;f++){ if(__builtin_popcount(w[f]^w[0])==k-1 and __builtin_popcount(w[(f-1+sz)%sz]^w[sz-1])==k-1)pos=f; } if(pos==-1){ cout<<1/0; return; } for(int f=pos-1;f>=pos-sz;f--){ w.push_back(w[(f+sz)%sz]^sz); } } } } void prnt(int x){ for(int s=n-1;s>=0;s--){ if((1<<s)&x)cout<<"1"; else cout<<"0"; } cout<<"\n"; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>k>>t; cin>>s; for(int i=0;i<s.size();i++){ start*=2; start+=s[i]-'0'; } if(k%2==0 or k>=n){ cout<<"-1\n"; return 0; } grey_code(k+1); extend_code(n-(k+1)); for(int i=0;i<w.size();i++)w[i]^=start; cout<<(1<<n)<<"\n"; for(int i:w)prnt(i); return 0; }

Compilation message (stderr)

lyuboyn.cpp: In function 'void extend_code(int)':
lyuboyn.cpp:49:24: warning: division by zero [-Wdiv-by-zero]
   49 |                 cout<<1/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...