関数 がそれぞれ のどちらかと等しいので、等式のパターンは 通り存在します。
そのため、 通りの条件分岐を書くことによって等式が成り立つかどうかの判定が実現できます。
また、Bit全探索などを行うことでより簡潔に解くこともできます。
(Writer解)
xxxxxxxxxx
using namespace std;
int main() {
int A, B, C, D;
cin >> A >> B >> C >> D;
if (min(A, B) + min(B, C) == min(C, D)) {
cout << "Yes" << endl;
} else if (min(A, B) + min(B, C) == max(C, D)) {
cout << "Yes" << endl;
} else if (min(A, B) + max(B, C) == min(C, D)) {
cout << "Yes" << endl;
} else if (min(A, B) + max(B, C) == max(C, D)) {
cout << "Yes" << endl;
} else if (max(A, B) + min(B, C) == min(C, D)) {
cout << "Yes" << endl;
} else if (max(A, B) + min(B, C) == max(C, D)) {
cout << "Yes" << endl;
} else if (max(A, B) + max(B, C) == min(C, D)) {
cout << "Yes" << endl;
} else if (max(A, B) + max(B, C) == max(C, D)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}