C言語の悪魔の広場

タイトル説明

遠い過去の伝説は、ACM / ICPCラボに定着大きな悪魔があります。

ビッグ悪魔は非常に強力であり、彼は4件の法執行B、CDを持っていた戦士は、11 B、CD 4つの法の執行を倒す必要があり、大きな悪魔を見たいと思っています。

その日、戦士は再び彼の新しいチームメイトを率いて研究室を攻撃しました。彼らは、最初のA法の施行を迎えられました。

研究所に決定され、最近の法執行はまっ広場は、すべての矩形はカット正方形です。彼はT矩形と戦士、実験室に伝え、各矩形の辺は座標システムのX軸またはY軸に平行です。法執行機関は、対角A、B上の矩形の各頂点の座標を与え、そしてAは、元のより小さい正方形長方形に、不変の戦士最大矩形のまま座標、及び新たな四角形A、B1を描き、 C1、D1四点座標(時計回り)、戦士が勝った場合でも。

親愛なる戦士は、大悪魔それから離れて近づくのカストディアンを、勝ちました!

エントリー

最初の行番号(100 T <=)Tが含まれている、テスト・データ・セットの数を示します。

次Tの行は、4つの整数X1、Y1、X2、Y2を(-100000 <= X1、Y1、X2、Y2 <= 100000)を含む各行は、A、B 2点の座標を表します。

輸出

出力線8つの整数にそれぞれ入力対応は4点(時計回り)の正方形A、B1、C1、D1の座標を表します。

サンプル入力のコピー

2
0 0 2 3
3 2 -1 -1

サンプル出力のコピー

0 0 2 2 2 2 0
3 2 3 -1 0 -1 0 2

コード

#include<stdio.h>
#include<math.h>
int main()
{
	int n,x1,x2,y1,y2,c,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
		c=fabs(x1-x2);
		if(fabs(y1-y2)<c)c=fabs(y1-y2);
		if(x1>x2&&y1>y2)printf("%d %d %d %d %d %d %d %d\n",x1,y1,x1,y1-c,x1-c,y1-c,x1-c,y1);
		if(x1<x2&&y1<y2)printf("%d %d %d %d %d %d %d %d\n",x1,y1,x1,y1+c,x1+c,y1+c,x1+c,y1);
		if(x1>x2&&y1<y2)printf("%d %d %d %d %d %d %d %d\n",x1,y1,x1-c,y1,x1-c,y1+c,x1,y1+c);
		if(x1<x2&&y1>y2)printf("%d %d %d %d %d %d %d %d\n",x1,y1,x1+c,y1,x1+c,y1-c,x1,y1-c);
	}
	return 0;
}
公開された47元の記事 ウォン称賛29 ビュー1476

おすすめ

転載: blog.csdn.net/Qianzshuo/article/details/103759158