#include <iostream> #include <string> #include <vector> using namespace std; vector<string> row(vector<string> &a){ for(int i=0;i<a.size()-1;i++){ for(int j=i+1;j<a.size();j++){ int size=a[i].size(); if(a[i][0]=='-'&&a[j][0]=='-'){ if(a[j].size()>size){ string k=a[i]; a[i]=a[j]; a[j]=k; } else{ for(int m=1;m<size;m++){ if(a[j][m]>a[i][m]){ string k=a[i]; a[i]=a[j]; a[j]=k; break; } } } } else if(a[i][0]!='-'&&a[j][0]=='-'){ string k=a[i]; a[i]=a[j]; a[j]=k; } else if(a[i][0]!='-'&&a[j][0]!='-'){ if(size>a[j].size()){ string k=a[i]; a[i]=a[j]; a[j]=k; } else{ for(int m=0;m<size;m++){ if(a[i][m]>a[j][m]){ string k=a[i]; a[i]=a[j]; a[j]=k; break; } } } } } } return a; } int main(){ int N; while(cin>>N){ vector<string> vec; for(int i=0;i<N;i++){ string a; cin>>a; vec.push_back(a); } row(vec); for(string s:vec){ cout<<s<<endl; } } }
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> row(vector<string> &a){
for(int i=0;i<a.size()-1;i++){
for(int j=i+1;j<a.size();j++){
int size=a[i].size();
if(a[i][0]=='-'&&a[j][0]=='-'){
if(a[j].size()>size){
string k=a[i];
a[i]=a[j];
a[j]=k;
}
else if(a[j].size() == size){
for(int m=1;m<size;m++){
if(a[j][m]>a[i][m]){
string k=a[i];
a[i]=a[j];
a[j]=k;
break;
}
else if(a[j][m] < a[i][m])
break;
}
}
}
else if(a[i][0]!='-'&&a[j][0]=='-'){
string k=a[i];
a[i]=a[j];
a[j]=k;
}
else if(a[i][0]!='-'&&a[j][0]!='-'){
if(size>a[j].size()){
string k=a[i];
a[i]=a[j];
a[j]=k;
}
else if(a[j].size() == size){
for(int m=0;m<size;m++){
if(a[i][m]>a[j][m]){
string k=a[i];
a[i]=a[j];
a[j]=k;
break;
}
else if(a[i][m] < a[j][m])
break;
}
}
}
}
}
return a;
}
int main(){
int N;
while(cin>>N){
vector<string> vec;
for(int i=0;i<N;i++){
string a;
cin>>a;
vec.push_back(a);
}
row(vec);
for(int s = 0; s<vec.size(); s++){
cout<<vec[s]<<endl;
}
}
}