大统领投票
第一届地球大统领开始选拔,全地球的所有生物都积极参与投票,现在已知得票结果,请输出新当选的得票数最多的地球大统领的编号和得票数。
输入:输入第一行为一个整数 N 表示参选生物数。(1 ≤ N ≤ 100)接下来 N 行,每行一个整数,表示第 i 名参选生物的票数。票数不会超过 1000位。
输出: 输出得票数最多的生物的编号和票数。
样例:
1 2 3 4
| 3 123456799 123456789132456789123456789 11111111111111
|
1 2
| 2 123456789132456789123456789
|
思路:
- 定义一个结构体包含某生物的编号与票数,使用sort方法对结构体排序后输出,时间复杂度: $O(nlogn)$
- 遍历一遍所有生物,动态更新票数多的答案即可,时间复杂度: $O(n)$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <iostream> #include <algorithm> #include <string> using namespace std;
struct node{ int num; string score; };
bool cmp(const node &a, const node &b){ if(a.score.size() == b.score.size()){ return a.score > b.score; } return a.score.size() > b.score.size(); };
node bio[105];
int main(){ int n; cin >> n; for(int i = 1; i <= n; ++i){ cin >> bio[i].score; bio[i].num = i; } sort(bio + 1, bio + n + 1, cmp); cout << bio[1].num << endl << bio[1].score << endl; return 0; }
|