一群人坐在一起,每人猜一个 100 以内的数,谁的数字最接近大家平均数的一半就赢。本题就要求你找出其中的赢家。
输入格式:
输入在第一行给出一个正整数N(≤)。随后 N 行,每行给出一个玩家的名字(由不超过8个英文字母组成的字符串)和其猜的正整数(≤ 100)。
输出格式:
在一行中顺序输出:大家平均数的一半(只输出整数部分)、赢家的名字,其间以空格分隔。题目保证赢家是唯一的。
输入样例:
7 Bob 35 Amy 28 James 98 Alice 11 Jack 45 Smith 33 Chris 62
输出样例:
22 Amy
1 #include<iostream>
2 #include<cstdio>
3 #include<algorithm>
4 #include<iomanip>
5 #include<cstring>
6 #include<string>
7 #include<cmath>
8 #include<stack>
9 #include<queue>
10 #include<vector>
11 #include<set>
12 #include<map>
13 #define ll long long
14 #define mes(x,y) memset(x,y,sizeof(x))
15 using namespace std;
16 struct node{
17 string s;ll v;
18 }a[10030];
19 bool cmp(node n1,node n2){
20 return n1.v<n2.v;
21 }
22 int main(){
23 std::ios::sync_with_stdio(false);
24 ll n,sum,i,j;
25 while(cin>>n){
26 sum=0;
27 for(i=0;i<n;i++){
28 cin>>a[i].s>>a[i].v;
29 sum+=a[i].v;
30 }
31 sum/=n;sum/=2;
32 for(i=0;i<n;i++){
33 a[i].v=fabs(a[i].v-sum);
34 }//变成绝对值
35 sort(a,a+n,cmp);//排序
36 cout<<sum<<" "<<a[0].s<<endl;
37 }
38 }
来源:https://www.cnblogs.com/SkystarX/p/12285726.html