A problem of sorting
Time Limit: 1 Sec
Memory Limit: 256 MB
题目连接
http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=627&pid=1001
Description
给出一张许多人的年龄和生日表。你需要从年轻到年老输出人们的名字。(没有人年龄相同)
Input
第一行包含一个正整数T(T \leq 5)T(T≤5),表示数据组数。
对于每组数据,第一行包含一个正整数n(1 \leq n \leq 100)n(1≤n≤100),表示人数,接下来n行,每行包含一个姓名和生日年份(1900-2015),用一个空格隔开。姓名长度大于0且不大于100。注意姓名中只包含字母,数字和空格。
Output
对于每组数据,输出nn行姓名。
Sample Input
FancyCoder
xyz111
FancyCoder
Sample Output
HINT
题意
排序,然后输出名字
从年轻到年老,名字中可能有空格
题解:
数字永远都是最后四个,所以处理一下就好了
代码:
//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <bitset>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 1000
#define mod 10007
#define eps 1e-9
int Num;
//const int inf=0x7fffffff; //§ß§é§à§é¨f§3
const int inf=0x3f3f3f3f;
inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
//************************************************************************************** struct node
{
char s[];
int age;
}a[maxn];
int n;
int kiss[maxn];
bool cmp(int aa,int bb)
{
return a[aa].age>a[bb].age;
}
int main()
{
int t=read();
while(t--)
{
int n=read();
memset(kiss,,sizeof(kiss));
memset(a,,sizeof(a));
for(int i=;i<n;i++)
{
int len = ;
a[i].age=;
cin.getline(a[i].s,);
len = strlen(a[i].s);
for(int j=;j<=;j++)
a[i].age=a[i].age*+a[i].s[len-+j]-'';
a[i].s[len-]='\0';
kiss[i]=i;
}
sort(kiss,kiss+n,cmp);
for(int i=;i<n;i++)
printf("%s\n",a[kiss[i]].s);
}
}