CF1593A Elections

洛谷题面

题目大意

给定 \(T\),表示输入数据的个数。

对于每组数据:

给定三个整数 \(a,b,c\)分别求出要想让每个数比另外两个数大的最少操作次数。

注意,每次操作是独立的。

定义一次操作为让指定数加一。

例如样例 1 2 2

依次考虑:

对于 \(1\),要想让 \(1>max(2,2)\),输出 \(2\)

对于 \(2\),要想让 \(2>max(1,2)\),输出 \(1\)

对于 \(2\),同上。

翻译 \(\rm By~\)\(\rm\color{black}{Coros~Trusds.}\)

题目分析

签到题。

翻译很良心(

对于每组数据,我们只需要输出除当前讨论数之外的两个数的最大值 \(+1\) 与当前讨论数的差即可。

有点绕,形象化一点:

有三个数 \(a,b,c\),讨论 \(a\) 时,答案即为 \(\max(b,c)+1-a\)

于是就没有了。

代码

inline int solve(int a,int b,int c)
{
	if(a>b && a>c)
	{
		return 0;
	}
	
	return max(b,c)+1-a;
}

int main(void)
{
	int T=read();
	
	while(T--)
	{
		int a=read(),b=read(),c=read();
		
		printf("%d %d %d\n",solve(a,b,c),solve(b,a,c),solve(c,a,b));
	}
	
	return 0;
}
posted @ 2021-10-14 22:33  Coros_Trusds  阅读(45)  评论(0)    收藏  举报