题解 CF1385A 【Three Pairwise Maximums】

这道题就是一道数学题(废话)。

不妨假设 \(a≤b≤c\)

\(∵ x=\max(a,b) ,y=\max(a,c),z=\max(b,c)\)

\(∴ x=b,y=c,z=c\)

于是我们得出,当输入的 \(x,y,z\) 中最大的两个数相等时,一定会存在满足条件的 \(a,b,c\)。构造 \(a=1,b=\min(x,y,z),c=\max(x,y,z)\)

然而,我们发现判断 \(x,y,z\) 之间的大小关系太烦(一点也不烦),于是我就使用了数组,\(sort\) 一下就搞定了。

于是就有以下代码

#include<bits/stdc++.h>
#define FOR(i,j,k)  for(int i=(j);i<=(k);i++)
using namespace std;
int tc,x,y,z;
int a[5];
inline int read()
{
    int x=0,f=1;char c=getchar();
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
    while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
    return x*f;
}
int main()
{
	tc=read();
	while(tc--)
	{
		a[1]=read(),a[2]=read(),a[3]=read();
		sort(a+1,a+4);
		if(a[1]!=a[2]&&a[2]!=a[3])
			puts("NO");
		else
		{
			if(a[2]!=a[3]&&a[1]==a[2])
			{
				puts("NO");
				continue;
			}
			puts("YES");
			printf("1 %d %d\n",a[1],a[3]); 
		}
		
	}
	return 0;
}

❀完结撒花❀

洛谷博客

posted @ 2020-08-03 21:25  LJC001151  阅读(80)  评论(0)    收藏  举报