Submission #336530

#TimeUsernameProblemLanguageResultExecution timeMemory
336530Kerim"The Lyuboyn" code (IZhO19_lyuboyn)C++17
100 / 100
508 ms7756 KiB
#include "bits/stdc++.h" #define MAXN 100009 #define INF 1000000007 #define mp(x,y) make_pair(x,y) #define all(v) v.begin(),v.end() #define pb(x) push_back(x) #define wr cout<<"----------------"<<endl; #define ppb() pop_back() #define tr(ii,c) for(__typeof((c).begin()) ii=(c).begin();ii!=(c).end();ii++) #define ff first #define ss second #define my_little_dodge 46 #define debug(x) cerr<< #x <<" = "<< x<<endl; using namespace std; typedef long long ll; typedef pair<int,int> PII; template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;} template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;} int N,K,T; char S[22]; void print(int x){ for(int i=0;i<N;i++) printf("%d",(x>>i&1)); puts(""); } bool checker(vector<int>v){ int sz=int(v.size()); assert(sz==(1<<N)); for(int i=0;i<sz;i++) if(__builtin_popcount(v[i]^v[(i+1)%sz])!=K) return 0; return 1; } vector<int>rec(int n,int k){ if(k==1){ if(n==1){ vector<int>tmp; tmp.pb(0);tmp.pb(1); return tmp; } vector<int>tmp=rec(n-1,k),ans; tr(it,tmp) ans.pb((*it)*2); reverse(all(tmp)); tr(it,tmp) ans.pb((*it)*2+1); return ans; } vector<int>A=rec(n-2,k-2);int sz=(1<<(n-2)); vector<int>B=A,ans;reverse(all(B)); for(int i=0;i<sz;i++){ int cur=A[i]; if(i%2==0) ans.pb(cur*4); else ans.pb(cur*4+3); } for(int i=0;i<sz;i++){ int cur=B[i]^((1<<(k-1))-1); if(i%2==0) ans.pb(cur*4+1); else ans.pb(cur*4+2); } for(int i=0;i<sz;i++){ int cur=A[i]; if(i%2==0) ans.pb(cur*4+3); else ans.pb(cur*4); } for(int i=0;i<sz;i++){ int cur=B[i]^((1<<(k-1))-1); if(i%2==0) ans.pb(cur*4+2); else ans.pb(cur*4+1); } return ans; } int main(){ // freopen("file.in", "r", stdin); scanf("%d%d%d",&N,&K,&T); scanf("%s",S); if(K%2==0) return 0*puts("-1"); int res=0; for(int i=0;i<N;i++) if(S[i]=='1') res+=(1<<i); vector<int>ans=rec(N,K); vector<int>barla; tr(it,ans) barla.pb(*it^res); printf("%d\n",(1<<N)); tr(it,ans) print(*it^res); //assert(checker(barla)); return 0; }

Compilation message (stderr)

lyuboyn.cpp: In function 'int main()':
lyuboyn.cpp:84:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   84 |     scanf("%d%d%d",&N,&K,&T);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~
lyuboyn.cpp:85:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   85 |     scanf("%s",S);
      |     ~~~~~^~~~~~~~
#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...