結果

問題 No.753 最強王者決定戦
ユーザー kotatsugamekotatsugame
提出日時 2018-11-10 09:02:36
言語 C
(gcc 12.3.0)
結果
AC  
実行時間 531 ms / 1,000 ms
コード長 446 bytes
コンパイル時間 1,320 ms
コンパイル使用メモリ 28,924 KB
実行使用メモリ 9,800 KB
最終ジャッジ日時 2023-08-14 13:38:18
合計ジャッジ時間 3,979 ms
ジャッジサーバーID
(参考情報)
judge12 / judge13
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 530 ms
9,760 KB
testcase_01 AC 530 ms
9,800 KB
testcase_02 AC 529 ms
9,704 KB
testcase_03 AC 531 ms
9,740 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c:1:20: 警告: データ定義が型または記憶域クラスを持っていません
    1 | long dp[1<<16][16];x[16][16],i,j,k;
      |                    ^
main.c:1:20: 警告: 型がデフォルトの ‘int’ に ‘x’ の宣言内でなります [-Wimplicit-int]
main.c:1:30: 警告: 型がデフォルトの ‘int’ に ‘i’ の宣言内でなります [-Wimplicit-int]
    1 | long dp[1<<16][16];x[16][16],i,j,k;
      |                              ^
main.c:1:32: 警告: 型がデフォルトの ‘int’ に ‘j’ の宣言内でなります [-Wimplicit-int]
    1 | long dp[1<<16][16];x[16][16],i,j,k;
      |                                ^
main.c:1:34: 警告: 型がデフォルトの ‘int’ に ‘k’ の宣言内でなります [-Wimplicit-int]
    1 | long dp[1<<16][16];x[16][16],i,j,k;
      |                                  ^
main.c:2:1: 警告: 戻り値の型をデフォルトの ‘int’ にします [-Wimplicit-int]
    2 | main(c)
      | ^~~~
main.c: 関数 ‘main’ 内:
main.c:2:1: 警告: ‘c’ の型をデフォルトの ‘int’ にします [-Wimplicit-int]
main.c:4:15: 警告: 関数 ‘scanf’ の暗黙的な宣言です [-Wimplicit-function-declaration]
    4 |         for(;~scanf("%d",&c);dp[1<<j/16][j++/16]=1)x[j>>4][j&15]=c?c:-x[j&15][j>>4];
      |               ^~~~~
main.c:1:1: 備考: include ‘<stdio.h>’ or provide a declaration of ‘scanf’
  +++ |+#include <stdio.h>
    1 | long dp[1<<16][16];x[16][16],i,j,k;
main.c:4:15: 警告: 組み込み関数 ‘scanf’ の互換性がない暗黙的な宣言です [-Wbuiltin-declaration-mismatch]
    4 |         for(;~scanf("%d",&c);dp[1<<j/16][j++/16]=1)x[j>>4][j&15]=c?c:-x[j&15][j>>4];
      |               ^~~~~
main.c:4:15: 備考: include ‘<stdio.h>’ or provide a declaration of ‘scanf’
main.c:12:26: 警告: 関数 ‘printf’ の暗黙的な宣言です [-Wimplicit-function-declaration]
   12 |         for(j=0;j<16;j++)printf("%ld\n",dp[i-1

ソースコード

diff #

long dp[1<<16][16];x[16][16],i,j,k;
main(c)
{
	for(;~scanf("%d",&c);dp[1<<j/16][j++/16]=1)x[j>>4][j&15]=c?c:-x[j&15][j>>4];
	for(;i<1<<16;i++)
		if((c=__builtin_popcount(i))>1&&__builtin_popcount(c)==1)
			for(c=(1<<c/2)-1;c<1<<16;j=c&-c,k=c+j,c=(c&~k)/j>>1|k)
				if(!(c&~i))
					for(j=0;j<16;j++)if(c&1<<j)
						for(k=0;k<16;k++)if(i&~c&1<<k)
							dp[i][x[j][k]==1?j:k]+=dp[c][j]*dp[i&~c][k];
	for(j=0;j<16;j++)printf("%ld\n",dp[i-1][j]);
}
0