P1781 宇宙总统
题目背景
宇宙总统竞选
题目描述
地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。
输入输出格式
输入格式:president.in
第一行为一个整数n,代表竞选总统的人数。
接下来有n行,分别为第一个候选人到第n个候选人的票数。
输出格式:president.out
共两行,第一行是一个整数m,为当上总统的人的号数。
第二行是当上总统的人的选票。
输入输出样例
说明
票数可能会很大,可能会到100位数字。
n<=20
题解1:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector> #include <set> #include <map> using namespace std; struct node{ int num; string s; }a[105]; bool cmp(node a,node b){ if(a.s.size()==b.s.size()) return a.s>b.s; else return a.s.size()>b.s.size(); } int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++){ cin>>a[i].s; a[i].num=i; } sort(a+1,a+n+1,cmp); printf("%d\n",a[1].num);; cout<<a[1].s<<endl; return 0; }题解2:
#include<iostream> using namespace std; int main() { int n; int number; string max=""; string in; cin >> n; for (int i = 0; i < n; i++){ cin >> in; int inSize = in.size(); int maxSize = max.size(); if (inSize > maxSize || (inSize >= maxSize && in > max)){ max = in; number = i + 1; } } cout << number << '\n' << max << '\n'; return 0; }