c++编程大师精英赛-公平比赛

公平比赛

暂无标签

 题目统计 全部提交

时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB
难度:中等
出题人:admin

描述

四名球员参加了季后赛。比赛按照以下方案进行:第一名选手与第二名选手比赛,第三名选手与第四名选手比赛,然后每对的获胜者将参加比赛的决赛。众所周知,在两名选手的比赛中,技术更强的一方将获胜。第i位玩家的技能等于si,并且所有的技能水平都是两两不同的(即在数组s中没有两个相同的值)。如果两名技术水平最高的选手在决赛中相遇,那么比赛就被称为公平比赛,否则比赛被称为不公平比赛。请判断给定的比赛是否公平。

输入描述

第一行包含一个整数t (1 < t < 104)——测试用例的数量。单行测试用例包含四个整数s1, s2, s3, s4 (1

输出描述

对于每个测试用例,如果比赛是公平的,输出YES,如果比赛不公平输出NO。

用例输入 1 

4
3 7 9 5
4 5 6 9
5 3 8 1
6 5 3 2

用例输出 1 

YES
NO
YES
NO

提示

  1. 在第一个测试案例中,技能7和9的玩家2和3晋级决赛;
  2. 在第二个测试案例中,技能5和9的玩家2和4晋级决赛。技能6的玩家没有晋级,但技能5的玩家晋级决赛,所以比赛是不公平的;
  3. 在第三个测试案例中,技能为5和8的玩家1和3晋级决赛;
  4. 在第四个测试案例中,技能为6和3的玩家1和3晋级决赛。技能5的玩家没有晋级,但技能3的玩家晋级决赛,所以比赛是不公平的。

思路: 

思路很简单,首先定义一个数组a[5],然后读入a[1]、a[2]、……a[4],也就是那四个数字

然后x=a[1],a[2]中最大的数字,y=a[3],a[4]中最大的数字

然后把数组a拿来排序

然后,ma=max(x,y),mi=min(x,y);

这是a[4]最厉害,a[3]第二厉害,如果a[4]=ma&&a[3]==mi 那我们就可以说这是公平的比赛


代码:

#include
using namespace std;
int main(){
//	ios::sync_with_stdio(0);
//	cin.tie(0);cout.tie(0);
	long long n;
	cin>>n;//n个样例
	for(int i=1;i<=n;i++){
		long long a[5];
		cin>>a[1]>>a[2]>>a[3]>>a[4];
		long long ma,mi,d,x;
		ma=max(a[1],a[2]);
		mi=max(a[3],a[4]);
		d=max(ma,mi);
		x=min(ma,mi);
		sort(a+1,a+5);
		long long maa=a[3],maaa=a[4];
		if(x==maa&&d==maaa){
			cout<<"YES"<

你可能感兴趣的:(c++)