質問のおおよその意味:
テスト入力Tの数、入力の数n(nは偶数である)、次いで座標が入力されたn個の異なる点で、要求出力4つの整数のX1、Y1、X2、Y2は、ポイントを介して発現され(X1等しい部分の二点に直線二次元平面内の点の、Y1)、(X2、Y2)。(この行は、任意の時点での平面を通過することができません)
サンプル入力:
1
4
0 1
-1 0
1 0
0 -1
サンプル出力:(特別審査員)
-19.99億1 -999000001
ソリューション:
これらのn個の点のxとyの2点に分割線として、一方が常にによっておよびbを見つけることができ、昇順の最初のキーに第2のキー、中央の2つの点A、Bを見つけることです急峻な線形の点は点の等しい数の2つの部分に平面内の点であってもよいです。
、A点とB点のx座標ソート中間体が同じでない場合、ただ一つがで描画され、A点とB点間の直線である;場合中間体をソート、x座標点AとBのように、それが通過しなければなりませんまっすぐに、Bの中間点。
コード:
1つの#include <ビット/ STDC ++ H> 2 の#defineのIO IOS :: sync_with_stdio(偽)。 3 使用して 名前空間はstdを、 4 のconst int型 M = 9999万。 5 構造体の点 6 { 7 INT X、Y。 8 } P [ 1005 ]。 9 BOOL CMP(点s1、点S2) 10 { 11 であれば(s1.x == s2.x)戻り s1.y < s2.y。 12 他の リターン s1.x < s2.x。 13 } 14 INT ()主 15 { 16 、IO INT T、N。 17 CIN >> T。 18 一方(T-- ) 19 { 20 のint X1、Y1、X2、Y2。 21 CIN >> N。 22 のためには、(int型、I = 0 ; iがN <; I ++ ) 23 CIN >> P [i]は.X >> P [i]の.Y。 24 ソート(P、P + N、CMP)。 25 もし(P [N / 2 ] .X = P![N / 2 - 1 ] .X) 26 X1 = P [N / 2 - 1 ] .X、Y 1 = M、X2 = P [N / 2 ] .X、Y 2 = - M。 27 他の 28 ×1 = P [N / 2 ] .x- 1、Y1 = P [N / 2 ]・Y + M、X2 = P [N / 2 ]・X + 1、Y 2 = P [N / 2 - 1 ] .y- M。 29 coutの<< X1 << ' ' << Y1 << ' ' << X2 << ' ' << Y2 << てendl; 30 } 31 リターン 0 。 32 }