原题链接:STIPC-003_E.公正的决赛
E.公正的决赛
题目背景
北京时间2021年6月16日凌晨,世预赛亚洲区A组末轮展开角逐,中国3-1击败叙利亚,成功晋级世预赛亚洲区12强赛。
题目描述
现在,有四名选手参加了一场不为人知的比赛,你负责判定比赛进行的准确性。
比赛按照以下方案进行:
第一名选手与第二名选手比赛,第三名选手与第四名选手比赛,获胜者将参加比赛决赛。
众所周知,在两名球员之间的比赛中,技术更高的一方将获胜。第 i i i 个玩家的技能等于 S i S_i Si 并且所有技能水平成对不同(即,数组 S S S 中没有两个相同的值)。
如果技能最高的两名球员在决赛中相遇,则该比赛被称为公平。
你判断的依据就是确认给定的比赛是否公平。
输入格式
第一行包含一个整数 t ( 1 ≤ t ≤ 1 0 4 ) t (1 ≤ t ≤ 10^4) t(1≤t≤104) ——测试用例的数量。
每行测试用例包含四个整数 s 1 , s 2 , s 3 , s 4 ( 1 ≤ s i ≤ 100 ) s1,s2,s3,s4 (1≤si≤100) s1,s2,s3,s4(1≤si≤100) ——玩家的技能值。
保证数组中的所有数字都不同。
输出格式
对于每个测试用例,如果比赛公平,则输出 Y E S YES YES ,否则输出 N O NO NO 。
输入输出样例
输入 #1:
4 3 7 9 5 4 5 6 9 5 3 8 1 6 5 3 2
输出 #1:
YES NO YES NO
说明/提示
样例的解释说明:
在第一个测试案例中,技能 7 和 9 的选手 2 和 3 晋级决赛;
在第二个测试案例中,技能 5 和 9 的选手 2 和 4 晋级决赛。技能 6 的选手没有晋级,而技能 5 的选手晋级决赛,所以比赛不公平;
在第三个测试案例中,技能 5 和 8 的选手 1 和 3 晋级决赛;
在第四个测试案例中,技能 6 和 3 的选手 1 和 3 晋级决赛。 技能 5 的选手没有晋级,而技能 3 的选手晋级决赛,所以比赛不公平。
题目解析:
对于本题,更容易确定技能最高的选手在决赛中不会相遇的情况。
这意味着他们在半决赛中相遇,而在其他半决赛中,双方球员都较弱。
使用以下公式很容易检查这种情况: m i n ( s 1 , s 2 ) > m a x ( s 3 , s 4 ) min(s_1,s_2)>max(s_3,s_4) min(s1,s2)>max(s3,s4) 或 m a x ( s 1 , s 2 ) < m i n ( s 3 , s 4 ) max(s_1,s_2)<min(s_3,s_4) max(s1,s2)<min(s3,s4) 。
AC代码(C++):
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int s[4];
for (int i = 0; i < 4; i++) cin >> s[i];
if (min(s[0], s[1]) > max(s[2], s[3]) || max(s[0], s[1]) < min(s[2], s[3]))
cout << "NO\n";
else
cout << "YES\n";
}
return 0;
}