http://uoj.ac/problem/9
uoj第一次test题目
注意下细节 考虑的全面一点
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
struct H
{
char s[200];
int v;
};int n,st;
bool cmp(H a,H b)
{
if(a.v!=b.v) return a.v<b.v;
for(int i=st;;i++)
if(a.s[i]!=b.s[i])
return a.s[i]<b.s[i];
//return a.v<b.v;
}
H num[10000+10];
int main()
{
cin >>n;
for(int i=1;i<=n;i++) scanf("%s",num[i].s+1);
st=strlen(num[1].s+1)-3;
while(num[1].s[st-1]>='0'&&num[1].s[st-1]<='9') st--;
for(int i=1;i<=n;i++)
num[i].v=strlen(num[i].s+1)-st;
sort(num+1,num+n+1,cmp);
for(int i=1;i<=n;i++) printf("%s\n",num[i].s+1);
return 0;
}