提出 #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":" ");
		}
	}
}

提出情報

提出日時
問題 F - Distribute Numbers
ユーザ kotatsugame
言語 C++ (GCC 9.2.1)
得点 1000
コード長 1404 Byte
結果 AC
実行時間 13 ms
メモリ 3504 KiB

コンパイルエラー

./Main.cpp:34:6: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type]
   34 | main()
      |      ^

ジャッジ結果

セット名 All
得点 / 配点 1000 / 1000
結果
AC × 1
セット名 テストケース
All 01-01.txt
ケース名 結果 実行時間 メモリ
01-01.txt AC 13 ms 3504 KiB