水王争霸
描述
众所周知,IOIForum有很多水王,他们的发贴数是如此之多,以至于必须要用高精度数才能保存。
为了迎接国庆,IOIForum决定举行一次水王争霸赛,比赛的规则是将这些水王截止到2003年9月30日23时59分59秒这一刻所发的总贴数从大到小进行排序。每个水王当然都想取得尽量靠前的名次,所以他们竭尽全力,不择手段地进行灌水。
终于,激动人心的一刻到来了,2003年10月1日0时0分0秒,你作为裁判得到了每个水王的发贴数,现在,你的任务是公正地把这些水王按照发贴数从大到小进行排序。
开始做题目想到数组,但是没有想到怎么输入。
后来参考http://m.blog.csdn.net/Binary10/article/details/47452419
接触结构体
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int N;
const int maxn = 1001;
struct n
{
string name;
string sum;
bool operator<(const n &m)
{
if (sum.size() < m.sum.size())return true;
if (sum.size()>m.sum.size())return false;
if (sum.size() == m.sum.size())
{
if (sum == m.sum)
return name > m.name;
else return sum < m.sum;
}
}
}A[maxn];
int main()
{
cin >> N;
for (int i =0; i < N; i++)
{
cin >> A[i].name >> A[i].sum;
}
sort(A, A + N);
for (int i = N-1; i >= 0; i--)
{
cout << A[i].name<<endl;
}return 0;
}
bool operator<(const n &m) 为重载操作符“<”由于输入为string 不能用sort排序,所以将<重新定义,其中m不知道什么意思,随便写什么都行,const n,必须为const ,否则不可以。
第一次接触结构体的区域感觉非常方便 以后多加使用。