Submission #288131

#TimeUsernameProblemLanguageResultExecution timeMemory
288131dvdg6566"The Lyuboyn" code (IZhO19_lyuboyn)C++14
100 / 100
76 ms6520 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pi; typedef vector<int> vi; typedef vector<pi> vpi; #define pb emplace_back #define mp make_pair #define f first #define s second #define SZ(x) (int)x.size() #define ALL(x) x.begin(),x.end() #define lb lower_bound const int MAXN=1001000; const ll MOD=998244353; int N,K,T; string S; void tobin(int y,int len){ string x; while(y){ x+=('0' + y%2); y/=2; } while(SZ(x) < len)x+='0'; reverse(ALL(x)); cout<<x; } vector<int> generate(int N,int K){ // cerr<<N<<' '<<K<<'\n'; int mod=(1<<(N-K+1)); vi A; A.resize((1<<N),0); ll alen=(K-1); int ind=0; int backf = min(K-1, N-K+1); int frontf = K-backf; if(frontf%2==0){ ++frontf; --backf; } // cerr<<backf<<' '<<frontf<<'\n'; vi B; if(frontf > 1){ B = generate(K-1, frontf); // for(auto i:B)cerr<<i<<' ';cerr<<'\n'; } int ind2=0; for(int i=1;i<=(1<<alen);++i){ for(int j=0;j<mod-1;++j){ A[ind] += ((1<<alen) - 1) * mod; ++ind; // A.pb(A.back() ^ ((1<<alen)-1)); } if(frontf == 1) A[ind] += (i&(-i))*mod; else{ A[ind] += B[ind2]*mod; ++ind2; } ++ind; // flip A back // if(SZ(A) < (1<<N))A.pb(A.back() ^ (i&(-i))); } // for(auto i:A)cerr<<i<<' ';cerr<<'\n'; ind=0; for(int i=1;i<=(1<<alen);++i){ for(int j=1;j<mod;++j){ // B.pb(B.back() ^ (j&(-j))); A[ind] += (j&(-j)); ++ind; } A[ind] += (1<<backf)-1; ++ind; // flip A back // if(SZ(B) < (1<<N))B.pb(B.back() ^ ((1<<(K-1))-1)); } // for(auto i:A)cerr<<i<<' ';cerr<<'\n'; return A; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin>>N>>K>>T>>S; if(K%2==0){ cout<<-1; return 0; } ll v=0;ll k=1; while(SZ(S)){ if(S.back() == '1')v+=k; k*=2; S.pop_back(); } vi A = generate(N,K); cout<<(1<<N)<<'\n'; tobin(v,N);cout<<'\n'; for(int i=0;i<((1<<N)-1);++i){ v ^= A[i]; tobin(v,N);cout<<'\n'; } // for(int i=0;i<SZ(A);++i){ // // if(flip&&i%2){ // // A[i]=((1<<(K-1))-1)^A[i]; // // B[i]=((1<<(N-K+1))-1)^B[i]; // // } // tobin(B[i],(N-K+1)); // tobin(A[i],K-1); // 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...