Submission #515604

#TimeUsernameProblemLanguageResultExecution timeMemory
515604kshitij_sodaniPresent (RMI21_present)C++14
29 / 100
1654 ms58764 KiB
//#pragma GCC optimize("Ofast,unroll-loops") #include <bits/stdc++.h> using namespace std; typedef long long llo; #define mp make_pair #define pb push_back #define a first #define b second #define endl '\n' llo pre[61][61]; llo dp[1<<22][23];; llo cal[1<<22]; llo cal2[1<<22]; llo comp[1<<22]; llo vis[1<<22]; llo vis2[1<<22]; llo vis3[44]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); for(llo i=1;i<=60;i++){ for(llo j=1;j<=60;j++){ pre[i][j]=__gcd(i,j); } } llo zz=0; llo zz2=0; llo bb=17; //for(llo i=1;i<=bb;i++){ llo oo=0; llo pp=0; for(llo j=0;j<(1<<(bb));j++){ vector<llo> tt; llo cur=0; llo ec=-1; for(llo i=0;i<bb;i++){ if((1<<i)&j){ ec=(1<<i); tt.pb(i*2+2); } } if(tt.size()){ cur=cal2[j-ec]; } for(llo k=0;k+1<tt.size();k++){ cur|=(1<<((pre[tt[k]][tt.back()]/2)-1)); } cal2[j]=cur; if((cur|j)==j){ // dp[(1<<bb)-j-1][0]=1; vis[j]=1; //oo++; } // pp++; } // cout<<11<<endl; llo val5=0; /*for(llo j=0;j<(1<<bb);j++){ for(llo i=0;i<bb;i++){ } }*/ for(llo j=0;j<(1<<bb);j++){ vector<llo> tt; llo cur=0; llo ec=0; for(llo i=0;i<bb;i++){ if((1<<i)&j){ ec=(1<<i); tt.pb(i*2+1); } } if(tt.size()){ cur=cal[j-ec]; } for(llo k=0;k+1<tt.size();k++){ cur|=(1<<(pre[tt[k]][tt.back()]/2)); } if((cur|j)==j){ llo su=0; for(llo i=0;i<bb;i++){ llo st=1; for(auto k:tt){ if((1<<(pre[k][2*i+2]/2))&j){ } else{ st=0; break; } } if(st==1){ su+=(1<<i); } } vis2[j]=1; comp[j]=su; //cout<<j<<":"<<su<<endl; } cal[j]=cur; /*if(j>0){ nn[j]+=nn[j-1]; }*/ } llo t; cin>>t; while(t--){ llo n; cin>>n; if(n==0){ cout<<0<<endl; continue; } n++; for(int i=1;i<=2*bb;i++){ vis3[i]=0; } for(llo ii=2*bb;ii>=1;ii--){ vis3[ii]=-1; llo ac=0; llo bc=0; for(llo j=2*bb;j>=ii;j-=2){ if(vis3[j]==-1){ ac+=(1<<((j-1)/2)); } else{ bc+=(1<<((j-1)/2)); } } llo ac2=0; llo bc2=0; for(llo j=2*bb-1;j>=ii;j-=2){ if(vis3[j]==-1){ ac2+=(1<<(j/2)); } else{ bc2+=(1<<(j/2)); } } llo zz=0; for(llo j=0;j<(1<<bb);j++){ dp[j][0]=0; if((j&ac)==0){ if((j|bc)==j){ dp[j][0]=vis[j]; } } for(llo i=1;i<=bb;i++){ if((1<<(i-1))&j){ dp[j][i]=dp[j][i-1]+dp[j-(1<<(i-1))][i-1]; } else{ dp[j][i]=dp[j][i-1]; } } } for(llo j=0;j<(1<<bb);j++){ if(vis2[j]==1){ if((j&ac2)>0){ continue; } if((j|bc2)==j){ zz+=dp[comp[j]][bb]; } } } /*if(ii==1){ cout<<zz<<"::"<<endl; }*/ if(zz<n){ n-=zz; vis3[ii]=1; continue; } } assert(n==1); vector<llo> ans; for(int i=1;i<=2*bb;i++){ if(vis3[i]==1){ ans.pb(i); } } cout<<ans.size()<<" "; for(auto j:ans){ cout<<j<<" "; } cout<<endl; } /*cout<<zz<<endl; cout<<zz2<<endl; llo su=0; llo cot=1500000000; cot=1e6; for(llo i=1;i<=50;i++){ llo cur=max(i-(i/3)-1,(llo)0); su+=(1LL<<cur); if(su>=cot){ cout<<i<<endl; break; } } */ return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:47:19: warning: comparison of integer expressions of different signedness: 'llo' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |    for(llo k=0;k+1<tt.size();k++){
      |                ~~~^~~~~~~~~~
Main.cpp:79:19: warning: comparison of integer expressions of different signedness: 'llo' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   79 |    for(llo k=0;k+1<tt.size();k++){
      |                ~~~^~~~~~~~~~
Main.cpp:27:6: warning: unused variable 'zz' [-Wunused-variable]
   27 |  llo zz=0;
      |      ^~
Main.cpp:28:6: warning: unused variable 'zz2' [-Wunused-variable]
   28 |  llo zz2=0;
      |      ^~~
Main.cpp:31:6: warning: unused variable 'oo' [-Wunused-variable]
   31 |  llo oo=0;
      |      ^~
Main.cpp:32:6: warning: unused variable 'pp' [-Wunused-variable]
   32 |  llo pp=0;
      |      ^~
Main.cpp:60:7: warning: unused variable 'val5' [-Wunused-variable]
   60 |   llo val5=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...