CF - 1385A -- Three Pairwise Maximums【推导式子】

Three Pairwise Maximums

CF - 1385A -- Three Pairwise Maximums【推导式子】_第1张图片

题意

已知 x=max(a,b),y=max(a,c),z=max(b,c),x,y,z, 求a,b,c; 

思路

谈论每种情况
1. a=b=c	直接输出三个相同的即可
2. a>b>c,a>c>b,a>b=c;	a=b>c 推出,x==y>z;
3. b>a>c,b>c>a,b>a=c;	b=c>a 推出,x==z>y;
4. c>a>b,c>b>a,c>b=a;  a=c>b 推出,y=z>x; 
每种情况只需要考虑一个式子即可,因为推出来的都是一个式子。

AC代码

#include
#include
#include
using namespace std;
int main(){
	int t;
	scanf("%d",&t);
	int x, y, z, a=0, b=0, c=0, flag=1;
	while (t--){
		flag = 0;
		scanf("%d%d%d", &x, &y, &z);
		if (x == y && y == z){
			flag = 1; a=x,b=y,c=z;
		}
		else if (x == y && y > z){
			flag = 1; a = x, b = z, c = z;
		}
		else if (x == z && z > y){
			flag = 1; a = y, b = x, c = y;
		}
		else if (y == z && z > x){
			flag = 1; a = x, b = x, c = y;
		}
		if (flag){
			puts("YES");
			printf("%d %d %d\n", a, b, c);
		}
		else {
			puts("NO");
		}
	}
	return 0;
} 

你可能感兴趣的:(#,思维题)