Посередине озера плавает плот, имеющий форму прямоугольника. Стороны плота направлены вдоль параллелей и меридианов. Введём систему координат, в которой ось OX направлена на восток, а ось ОY – на север. Пусть юго-западный угол плота имеет координаты (
x
1
x
1
,
y
1
y
1
), северо-восточный угол – координаты (
x
2
x
2
,
y
2
y
2
).
Пловец находится в точке с координатами (x, y). Определите, к какой стороне плота (северной, южной, западной или восточной) или к какому углу плота
(северо-западному, северо-восточному, юго-западному, юго-восточному) пловцу нужно плыть, чтобы как можно скорее добраться до плота.
Формат ввода
Программа получает на вход шесть чисел в следующем порядке:
x
1
x
1
,
y
1
y
1
(координаты юго-западного угла плота),
x
2
x
2
,
y
2
y
2
(координаты северо-восточного угла плота),
x
x,
y
y (координаты пловца). Все числа целые и по модулю не превосходят 100. Гарантируется, что
x
1
<
x
2
x
1
<x
2
,
y
1
<
y
2
y
1
<y
2
,
x
≠
x
1
x
=x
1
,
x
≠
x
2
x
=x
2
,
y
≠
y
1
y
=y
1
,
y
≠
y
2
y
=y
2
, координаты пловца находятся вне плота.
Формат вывода
Если пловцу следует плыть к северной стороне плота, программа должна вывести символ ”N”, к южной — символ ”S”, к западной — символ ”W”, к восточной — символ ”E”. Если пловцу следует плыть к углу плота, нужно вывести одну из следующих строк: ”NW”, ”NE”, ”SW”, ”SE”.
Решение на языке программирования C#
using System.Linq;
using System;
using System.Text;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
StreamReader sr = new StreamReader("input.txt");
var x1 = int.Parse(sr.ReadLine());
var y1 = int.Parse(sr.ReadLine());
var x2 = int.Parse(sr.ReadLine());
var y2 = int.Parse(sr.ReadLine());
var x = int.Parse(sr.ReadLine());
var y = int.Parse(sr.ReadLine());
var XF = 0;
var YF = 0;
if (Math.Abs(x1 - x) > Math.Abs(x2 - x))
XF = x - x2;
else
XF = x - x1;
if (Math.Abs(y1 - y) > Math.Abs(y2 - y))
YF = y - y2;
else
YF = y - y1;
x += XF;
y += YF;
//"NW" "NE" "SW" "SE"
System.Console.WriteLine();