Official

A - Four Points Editorial by leaf1415


入力で与えられた \(3\)\((x_1, y_1), (x_2, y_2), (x_3, y_3)\) に対し、長方形の残る \(1\)\((x_{\mathrm{ans}}, y_{\mathrm{ans}})\) を求める方法を考えます。

まず、\(x_{\mathrm{ans}}\) を求めます。\(x_1, x_2, x_3\) は問題文中にある長方形の異なる \(3\) 頂点の \(x\) 座標であることから、\(x_1, x_2, x_3\) のうちどれか \(2\) つは等しいです。そして、残る \(1\) つは他の \(2\) つとは異なる値であり、これが \(x_{\mathrm{ans}}\) と等しいです。 すなわち、\(x_1 = x_2\)\(x_2 = x_3\)\(x_3 = x_1\) のうちちょうど \(1\) つが成り立ち、

  • \(x_1 = x_2\) のとき、\(x_{\mathrm{ans}} = x_3\)
  • \(x_2 = x_3\) のとき、\(x_{\mathrm{ans}} = x_1\)
  • \(x_3 = x_1\) のとき、\(x_{\mathrm{ans}} = x_2\)

です。

\(y_{\mathrm{ans}}\) についても同様に、\(y_1 = y_2\)\(y_2 = y_3\)\(y_3 = y_1\) のうちちょうど \(1\) つが成り立ち、

  • \(y_1 = y_2\) のとき、\(y_{\mathrm{ans}} = y_3\)
  • \(y_2 = y_3\) のとき、\(y_{\mathrm{ans}} = y_1\)
  • \(y_3 = y_1\) のとき、\(y_{\mathrm{ans}} = y_2\)

です。

よって、与えられた \((x_1, y_1), (x_2, y_2), (x_3, y_3)\) に対して、上記にしたがって \(x_{\mathrm{ans}}, y_{\mathrm{ans}}\) を計算して出力することでこの問題に正解できます。 「 \(x_1 = x_2\) のとき」に該当するかなどの判定には、プログラミング言語の標準的な機能である条件分岐の機能( if 文など)を用いることができます。

C++ 言語による正解例を以下に記載します。

#include <iostream>
using namespace std;

int main(void)
{
  int x_1, x_2, x_3, y_1, y_2, y_3, x_ans, y_ans;
  
  cin >> x_1 >> y_1;
  cin >> x_2 >> y_2;  
  cin >> x_3 >> y_3;
  
  if(x_1 == x_2) x_ans = x_3;
  if(x_2 == x_3) x_ans = x_1;  
  if(x_3 == x_1) x_ans = x_2;  
  
  if(y_1 == y_2) y_ans = y_3;
  if(y_2 == y_3) y_ans = y_1;  
  if(y_3 == y_1) y_ans = y_2;
  
  cout << x_ans << " " << y_ans << endl;
  
  return 0;
}

posted:
last update: