Submission #173665

#TimeUsernameProblemLanguageResultExecution timeMemory
173665RafaelSus"The Lyuboyn" code (IZhO19_lyuboyn)C++14
100 / 100
163 ms7664 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5; typedef long long ll; const ll inf=1e15; #define pb push_back const int INF=(0x3f3f3f3f); int tod(vector<int>a){ int res=0; reverse(a.begin(),a.end()); for(int i=0;i<a.size();i++){ res+=a[i]*(1<<i); } return res; } int tod(string s){ int res=0; reverse(s.begin(),s.end()); for(int i=0;i<s.size();i++){ res+=(s[i]-'0')*(1<<i); } return res; } string tobin(int x,int h){ string res=""; if(x==0){ res="0"; while(res.size()<h)res+="0"; return res; } while(x){ if(x%2)res+="1"; else res+="0"; x/=2; } while(res.size()<h)res+="0"; reverse(res.begin(),res.end()); return res; } int n,k,t; int used[(1<<18)+5]; int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin>>n>>k>>t; string s; cin>>s; int x=tod(s); vector<int>a(n,0); for(int i=0;i<k;i++){ a[n-1-i]=1; } if(k%2==0){ cout<<"-1"; return 0; } used[x]=1; vector<int>answ; answ.pb(x); int tmp=x; int tim=0,hin=0; int X=0; while(answ.size()<(1<<n)){ do{ if(answ.size()==(1<<n))break; int y=tod(a); if(!used[y^tmp]){ answ.pb(y^tmp); tmp^=y; used[tmp]=1; break; } }while(next_permutation(a.begin(),a.end())); for(int i=0;i<(n-k);i++)a[i]=0; for(int i=n-k;i<n;i++)a[i]=1; if(tim==answ.size()&&tim==hin&&X==10)break; if(tim==answ.size()){X++;hin=tim;} tim=answ.size(); } if(answ.size()!=(1<<n)){ cout<<"-1\n"; return 0; } cout<<(1<<n)<<'\n'; for(int i=0;i<answ.size();i++){ cout<<tobin(answ[i],n)<<'\n'; } }

Compilation message (stderr)

lyuboyn.cpp: In function 'int tod(std::vector<int>)':
lyuboyn.cpp:13:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<a.size();i++){
               ~^~~~~~~~~
lyuboyn.cpp: In function 'int tod(std::__cxx11::string)':
lyuboyn.cpp:22:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<s.size();i++){
               ~^~~~~~~~~
lyuboyn.cpp: In function 'std::__cxx11::string tobin(int, int)':
lyuboyn.cpp:32:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(res.size()<h)res+="0";
           ~~~~~~~~~~^~
lyuboyn.cpp:40:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(res.size()<h)res+="0";
         ~~~~~~~~~~^~
lyuboyn.cpp: In function 'int main()':
lyuboyn.cpp:71:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(answ.size()<(1<<n)){
         ~~~~~~~~~~~^~~~~~~
lyuboyn.cpp:73:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       if(answ.size()==(1<<n))break;
          ~~~~~~~~~~~^~~~~~~~
lyuboyn.cpp:84:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(tim==answ.size()&&tim==hin&&X==10)break;
        ~~~^~~~~~~~~~~~~
lyuboyn.cpp:85:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(tim==answ.size()){X++;hin=tim;}
        ~~~^~~~~~~~~~~~~
lyuboyn.cpp:88:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(answ.size()!=(1<<n)){
      ~~~~~~~~~~~^~~~~~~~
lyuboyn.cpp:93:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<answ.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...