SSL 1549_水王争霸_排序

时间:2023-01-29 19:40:15

题目描述

众所周知,IOIForum有很多水王,他们的发贴数是如此之多,以至于必须要用高精度数才能保存。
  为了迎接国庆,IOIForum决定举行一次水王争霸赛,比赛的规则是将这些水王截止到2003年9月30日23时59分59秒这一刻所发的总贴数从大到小进行排序。每个水王当然都想取得尽量靠前的名次,所以他们竭尽全力,不择手段地进行灌水。
  终于,激动人心的一刻到来了,2003年10月1日0时0分0秒,你作为裁判得到了每个水王的发贴数,现在,你的任务是公正地把这些水王按照发贴数从大到小进行排序。

  

思路

字符串排序,先判断长度再按位比较


#include <stdio.h>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
struct arr
{
string id,num;
}a[100000];
int cam(arr a,arr b)
{
if (a.num.size()!=b.num.size())
{
return a.num.size()>b.num.size();
}
else
{
if (a.num==b.num)
return a.id<b.id;
else return a.num>b.num;
}
}
int main()
{
int n;
scanf("%d",&n);
for (int i=1;i<=n;i++)
cin>>a[i].id>>a[i].num;
sort(a+1,a+n+1,cam);
for (int i=1;i<=n;i++)
cout<<a[i].id<<endl;
}