結果

問題 No.1306 Exactly 2 Digits
ユーザー tails
提出日時 2020-12-03 18:33:38
言語 Perl
(5.40.0)
結果
AC  
実行時間 71 ms / 2,000 ms
コード長 794 bytes
コンパイル時間 446 ms
コンパイル使用メモリ 6,816 KB
実行使用メモリ 38,192 KB
平均クエリ数 1236.78
最終ジャッジ日時 2024-07-17 08:51:04
合計ジャッジ時間 11,178 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 123
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.pl syntax OK

ソースコード

diff #

$n=<>;

if(!fork){
	for$v(2..$n*($n-1)){
		print "? $v 1\n";
	}
	exit;
}
for$v(2..$n*($n-1)){
	$_=<>;
	($a,$b)=split;
	$k=($a+$n)*($n*2)+($b+$n);
	push @$k,$v;
	$amin=$a if $amin>$a;
	$amax=$a if $amax<$a;
	$bmin=$b if $bmin>$b;
	$bmax=$b if $bmax<$b;
	$c=$v if $a==$amin && $b==$bmax;
}

if($amax-$amin>$bmax-$bmin){
	$na=1; $nb=$n;
}else{
	$na=$n; $nb=1;
}

if(!fork){
	for$k(0..$n*$n*4-1){
		($v0,$v1)=@$k;
		if($v1){
			print "? $c $v0\n";
		}
	}
	exit;
}

sub mkn{
	($_[0]-$amin)*$na+($_[1]-$bmin)*$nb+$n;
}

$z[0]=mkn(0,0);
for$k(0..$n*$n*4-1){
	($v0,$v1)=@$k;
	if($v0){
		$a=int($k/($n*2))-$n;
		$b=$k%($n*2)-$n;
		if($v1){
			$_=<>;
			($a1,$b1)=split;
			if($b1-$a1>$bmax-$amin){
				($v0,$v1)=($v1,$v0);
			}
			$z[$v1-1]=mkn($b,$a);
		}
		$z[$v0-1]=mkn($a,$b);
	}
}

print "! @z\n";
0