⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex2.dpr

📁 tongji acm-online judge solution
💻 DPR
字号:
{
	Code optimization:
		2D coordinates (x,y) is compressed 1D ((x-1)*M+y)
		3 Steps of transfers are compressed to 1 Step of transfer.
}
program Ural_1386(Input,Output);
const
	MaxSize=100;
type
	TIndex=Longint;
	TTransfer=array[0..4-1,0..MaxSize*MaxSize-1]of TIndex;
	TTriadTransfer=array[0..64-1,0..MaxSize*MaxSize-1]of TIndex;
	TMap=array[0..MaxSize*MaxSize-1]of TIndex;
	TUsed=array[0..MaxSize*MaxSize-1]of Boolean;
var
	N,M:TIndex;
	Step:TIndex;
	Map:TMap;
	Used:TUsed;
	T:TTransfer;
	D:TTriadTransfer;
	Count:TIndex;

procedure Main;
var
	i,j,k,p,x,y:TIndex;
begin
	Readln(N,M);
	for i:=0 to 3 do
		for p:=0 to N*M-1 do
		begin
			Read(x,y);
			T[i,p]:=(x-1)*M+(y-1);
		end;

	for i:=0 to 3 do
		for j:=0 to 3 do
			for k:=0 to 3 do
				for p:=0 to N*M-1 do
					D[i shl 4+j shl 2+k,p]:=T[k,T[j,T[i,p]]];
	for p:=0 to N*M-1 do
		Map[p]:=p;

	Read(Step);
	while Step>2 do
	begin
		Dec(Step,3);
		Read(i,j,k);
		i:=(i-1) shl 4+(j-1) shl 2+(k-1);
		for p:=0 to N*M-1 do 
			Map[p]:=D[i,Map[p]];
	end;
	while Step>0 do
	begin
		Dec(Step);
		Read(i);
		Dec(i);
		for p:=0 to N*M-1 do
			Map[p]:=T[i,Map[p]];
	end;

	for p:=0 to N*M-1 do
		Used[p]:=false;
	for p:=0 to N*M-1 do
		Used[Map[p]]:=true;
	Count:=0;
	for p:=0 to N*M-1 do
		if Used[p] then
			Inc(Count);
	Writeln(Count);
	for i:=0 to N-1 do
		for j:=0 to M-1 do
			if Used[i*M+j] then
				Writeln(i+1,' ',j+1);
end;
begin
	Main;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -