测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A27940. 三元组的离心力

填空题 中等

题目描述

三元组的离心力

题目描述

三元组 (a,b,c) 的“离心力”定义为 |a-b|+|b-c|+|c-a|。现给定三个非空的整数集合 S1、S2、S3,请你找出所有跨这三个集合的三元组 (a,b,c)(即 a∈ S1,b∈ S2,c∈ S3)的最小离心力。

输入

输入第一行给出三个不超过 104 的正整数 n1、n2、n3,依次为集合 S1、S2、S3 中元素的个数(注意一个集合内没有相同的元素)。随后三行,顺次给出三个集合的元素,均为 [-104,104] 内的整数。同行数字间以空格分隔。

输出

在一行中输出 `LiXinLi(a, b, c) = d`,其中 `(a, b, c)` 是具有最小离心力的三元组,`d` 是对应的离心力。如果解不唯一,输出那个最大的解。 注意:(a1,a2,a3)>(b1,b2,b3) 是指,存在 1≤k≤3 使得 ai=bi 对 1≤i< k 成立,并且 ak>bk。 提示:下方输出样例中注意到样例实际上有两组解,另外一组解是 (9, 10, 9)。因为 (11, 11, 12) 比较大,所以输出的是这组解。

输入样例

4 4 6
0 9 -1 11
10 -25 11 -10
9 2 41 17 12 30

输出样例

LiXinLi(11, 11, 12) = 2

提示

注意到样例实际上有两组解,另外一组解是 (9, 10, 9)。因为 (11, 11, 12) 比较大,所以输出的是这组解。

参考答案

#include<iostream> #include<iomanip> #include<algorithm> using namespace std; int n1,n2,n3; int a[110]; int b[110]; int c[110]; int x,y,z = 0; int main() { cin>>n1>>n2>>n3; for(int i = 0;i<n1;i++) { cin>>a[i]; } for(int i = 0;i<n2;i++) { cin>>b[i]; } for(int i = 0;i<n3;i++) { cin>>c[i]; } int p = 9999; for(int i = 0;i<n1;i++) { for(int j = 0;j<n2;j++) { for(int k = 0;k<n3;k++) { p = min(p,(a[i]-b[j])+(b[j]-c[k])+(c[k]-a[i])); x = a[i]; y = b[j]; z = c[z]; } } } cout<<"lixinli"<<"("<<x<<","<<y<<","<<z<<")"<<" "<<"="<<" "<<p; return 0; }
上一题 下一题