题解 CF1337A 【Ichihime and Triangle】
ShineEternal
2020-04-16 07:58:50
## description
- 给定四个整数 $a,b,c,d$,你需要求出一组 $a\le x\le b$,$b\le y\le c$,$c\le z\le d$,使得以 $x,y,z$ 为三条边的长度能够组成一个三角形。**如果有多种方案,输出任意一种**。
- **输入包含多组数据**,数据组数不超过 $1000$,$1\le a\le b\le c\le d\le 10^9$。
- translate by @[ShineEternal](https://www.luogu.com.cn/user/45475)。
## solution
这种构造类型的题目我们可以通过找特殊值来实现。
不难发现,$a,b,c,d$ 单调递增,所以 $x,y,z$ 也会单调递增。这时只需要满足 $x+y>z$ 就行了。
我们把 $x,y$ 取最大值:$x=b,y=c$;$z$ 取最小值:$z=c$。就是最有可能实现的方案。
这时我们发现 $x+y>z$,说明一定能实现。所以直接输出 `b c c` 即可。
## code:
```cpp
#include<cstdio>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("%d %d %d\n",b,c,c);
}
return 0;
}
```