Другие языки программирования и технологии

С++ ПОМОГИТЕ С ЗАДАЧЕЙ

Шахматный слон ходит по диагонали. Даны две различные клетки шахматной доски, определите, может ли слон попасть с первой клетки на вторую одним ходом.

Формат входных данных
Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки.
Формат выходных данных
Программа должна вывести YES, если из первой клетки ходом слона можно попасть во вторую или NO в противном случае.
Sample Input:

4
4
5
5
Sample Output:

YES
#include <iostream>
using namespace std;
bool c(int x1, int y1, int x2, int y2) {
const auto n = 9;
if (x1 == x2 && y1 == y2) return true;
if (((x1 + y1) & 1) == ((x2 + y2) & 1)) {
if (x1 != x2 || y1 != y2) {
if (x2 < x1) {
if (y2 < y1) {
for (int x = x1 - 1, y = y1 - 1; x > 0 && y > 0; --x, --y) {
if (x == x2 && y == y2) return true;
}
} else {
for (int x = x1 - 1, y = y1 + 1; x > 0 && y < n; --x, ++y) {
if (x == x2 && y == y2) return true;
}
}
} else {
if (y2 < y1) {
for (int x = x1 + 1, y = y1 - 1; x < n && y > 0; ++x, --y) {
if (x == x2 && y == y2) return true;
}
} else {
for (int x = x1 + 1, y = y1 + 1; x < n && y < n; ++x, ++y) {
if (x == x2 && y == y2) return true;
}
}
}
}
}
return false;
}
int main() {
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
cout << (c(x1, y1, x2, y2) ? "YES" : "NO") << "\n";
system("pause");
}
АЖ
Айдос Жакишев
97 806
Лучший ответ
Без abs
Azizbek Jumabaev
Azizbek Jumabaev
3 568
Алексей Колесников мне б без abs прост там ток по пройденному
Ulan Almasbecov Гениально просто.