提出 #24087155
ソースコード 拡げる
#include<iostream>
#include<bitset>
#include<array>
#include<algorithm>
#include<vector>
#include<random>
#include<map>
#include<set>
using namespace std;
const int Kblen=5;
const int K=1<<Kblen;
int tb[K][K]={};
bitset<K*K+K+1>A[K*K+K+1];
void f(int x,int y,int len,int t)
{
if(len==1)
{
A[x][y]=1;
}
else
{
if(t&1)
{
f(x,y,len/2,t/2);
f(x+len/2,y+len/2,len/2,t/2);
}
else
{
f(x,y+len/2,len/2,t/2);
f(x+len/2,y,len/2,t/2);
}
}
}
main()
{
tb[1][1]=1;
for(int s=2;s<K;s*=2)
{
for(int i=0;i<s;i++)for(int j=0;j<s;j++)
{
tb[i][j+s]=tb[i+s][j]=tb[i][j];
tb[i+s][j+s]=!tb[i][j];
}
}
for(int i=0;i<K;i++)
{
//int X[Kblen][Kblen]={{1,2,4},{2,4,3},{4,3,6}};
int Y[Kblen*2-1];//={1,2,4,3,6};
for(int k=0;k<Kblen;k++)Y[k]=1<<k;
for(int k=Kblen;k<Kblen*2-1;k++)Y[k]=Y[k-Kblen]^Y[k-Kblen+2];
int id[Kblen]={};
for(int k=0;k<Kblen;k++)
{
for(int l=0;l<Kblen;l++)id[k]|=tb[Y[k+l]][i]<<l;
}
for(int j=0;j<K;j++)
{
int t=0;
for(int k=0;k<Kblen;k++)
{
t|=tb[id[k]][j]<<k;
}
f(i*K,j*K,K,t);
}
}
for(int i=0;i<K;i++)
{
for(int j=0;j<K;j++)
{
A[i*K+j][K*K+i]=1;
A[K*K+i][i*K+j]=1;
}
A[K*K+i][K*K+K]=1;
A[K*K+K][K*K+i]=1;
}
A[K*K+K][K*K+K]=1;
int N=K*K+K+1;
cout<<N<<" "<<K+1<<endl;
for(int i=0;i<N;i++)
{
int cnt=0;
for(int j=0;j<N;j++)if(A[i][j]==1)
{
cout<<j+1<<(++cnt==K+1?"\n":" ");
}
}
}
提出情報
コンパイルエラー
./Main.cpp:34:6: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type]
34 | main()
| ^
ジャッジ結果
| セット名 |
All |
| 得点 / 配点 |
1000 / 1000 |
| 結果 |
|
| セット名 |
テストケース |
| All |
01-01.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 01-01.txt |
AC |
13 ms |
3504 KiB |