题目链接:https://www.luogu.org/problemnew/show/P1781
#include<iostream>
#include<cstring>
#include<string>
#include<vector>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
string s;
typedef vector<int> vec;
typedef vector<vec> mat;
/*
v1>v2 return -1;
v1=v2 return 0;
v1<v2 return 1
*/
int cmp(vec &v1,vec &v2){
if(v1[0]!=v2[0]){
if(v1[0]<v2[0]) return 1;
else return -1;
}
else{
for(int i=v1[0];i>=1;i--)
if(v1[i]<v2[i]) return 1;
else if(v1[i]>v2[i]) return -1;
}
return 0;
}
int main(void){
scanf("%d",&n);
mat A(n,vec(101));
for(int i=0;i<n;i++){
cin>>s;
A[i][0]=s.length();
for(int j=1;j<=A[i][0];j++)
A[i][j]=s[A[i][0]-j]-'0';
A[i][A[i][0]+1]=i+1;
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(cmp(A[i],A[j])>0) swap(A[i],A[j]);
}
}
/*
for(int i=0;i<n;i++){
for(int j=A[i][0];j>=1;j--) cout<<A[i][j];
cout<<" "<<A[i][A[i][0]+1];
cout<<endl;
}
*/
cout<<A[0][A[0][0]+1]<<endl;
for(int i=A[0][0];i>=1;i--) cout<<A[0][i];
return 0;
}