题解 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;
}
❀完结撒花❀

浙公网安备 33010602011771号