水王争霸 训练

水王争霸

描述

众所周知,IOIForum有很多水王,他们的发贴数是如此之多,以至于必须要用高精度数才能保存。

为了迎接国庆,IOIForum决定举行一次水王争霸赛,比赛的规则是将这些水王截止到2003年9月30日23时59分59秒这一刻所发的总贴数从大到小进行排序。每个水王当然都想取得尽量靠前的名次,所以他们竭尽全力,不择手段地进行灌水。

终于,激动人心的一刻到来了,2003年10月1日0时0分0秒,你作为裁判得到了每个水王的发贴数,现在,你的任务是公正地把这些水王按照发贴数从大到小进行排序。

开始做题目想到数组,但是没有想到怎么输入。

后来参考http://m.blog.csdn.net/Binary10/article/details/47452419 

接触结构体 

#include
#include
#include
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<
}return 0;


}





bool operator<(const n &m) 为重载操作符“<”由于输入为string 不能用sort排序,所以将<重新定义,其中m不知道什么意思,随便写什么都行,const n,必须为const ,否则不可以。

第一次接触结构体的区域感觉非常方便 以后多加使用。

你可能感兴趣的:(水王争霸 训练)