Посередине озера плавает плот, имеющий форму прямоугольника. Стороны плота направлены вдоль параллелей и меридианов. Введём систему координат, в которой ось 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();