Description
疫情期间,小明在家闲来无事,让妈妈教他认识数字。学了一天后,小明觉得自己都学会了,让妈妈出一道题目检验自己。妈妈出了一道比较大小的题目,你能和他一起做出来吗?
Input
第一行一个整数n,表示有n个数字。
其下n行,每行一个数字a。
Output
将数字从小到大排序,输出每个数字的编号,中间以空格隔开。相同大小的数字,序号按照出现的先后次序排列。
Sample Input 1
3 3456789 8755454563 5465565
Sample Output 1
1 3 2
AC:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct student{
int id;
char sum[20000];
int yy=0;
};
bool cmp(student f,student l){
if(strlen(f.sum)>strlen(l.sum))f.yy=1;
else if(strlen(f.sum)<strlen(l.sum))l.yy=1;
else{
for(int i=0;i<strlen(f.sum);i++){
if(f.sum[i]>l.sum[i]){
f.yy=1;
break;
}else if(f.sum[i]<l.sum[i]){
l.yy=1;
break;
}
}
}if(f.yy!=l.yy)return f.yy<l.yy;
else return f.id<l.id;
}int main(){
int n;
cin>>n;
student a[n];
for(int i=0;i<n;i++){
cin>>a[i].sum;
a[i].id=i+1;
}sort(a,a+n,cmp);
for(int i=0;i<n;i++){
cout<<a[i].id<<" ";
}
}