题目描述
地球历公元 6036 年,全宇宙准备竞选一个最贤能的人当总统,共有 n 个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。
输入格式
第一行为一个整数 n,代表竞选总统的人数。
接下来有 n 行,分别为第一个候选人到第 n 个候选人的票数。
输出格式
共两行,第一行是一个整数 m,为当上总统的人的号数。
第二行是当上总统的人的选票。
输入输出样例
输入 #1复制
5 98765 12365 87954 1022356 985678
输出 #1复制
4 1022356
说明/提示
票数可能会很大,可能会到 100 位数字。
1≤n≤20。
方法一:打擂台排序:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
string max="0";
string s;
int mark=1;
for(int i=1;i<=n;i++){
cin>>s;
int len1=max.size();
int len2=s.size();
if(len1<len2){
max=s;
mark=i;
}else if(len1==len2&&s>max){
max=s;
mark=i;
}
}
cout<<mark<<endl<<max;
return 0;
}
方法二:结构体排序:
#include<bits/stdc++.h>
using namespace std;
struct people{
int number;
string score;
}p[25];
bool cmp(people p1,people p2){
int len1=p1.score.size();
int len2=p2.score.size();
if(len1!=len2){
return len1>len2;
}
return p1.score>p2.score;
}