用小号做的div2
A:竟然看错了排序顺序。。。白白WA了两发
注意读入一整行(包括空格):getline(cin,st) 【gets也是资瓷的
1 #include<iostream> 2 using namespace std; 3 string s[1000]; 4 int d[1000]; 5 int T,N; 6 7 void qsort(int l,int r) 8 { 9 int i=l,j=r; 10 int m=(l+r)/2; 11 int mid=d[m]; 12 while(i<j) 13 { 14 while(d[i]<mid) i++; 15 while(d[j]>mid) j--; 16 if(i<=j) 17 { 18 int tmp=d[i]; 19 d[i]=d[j]; 20 d[j]=tmp; 21 string ts=s[i]; 22 s[i]=s[j]; 23 s[j]=ts; 24 i++; 25 j--; 26 } 27 } 28 if(l<j) qsort(l,j); 29 if(i<r) qsort(i,r); 30 } 31 32 int main() 33 { 34 string st; 35 cin>>T; 36 while(T--) 37 { 38 cin>>N; 39 for(int i=0;i<=N;i++) 40 { 41 getline(cin,st); 42 //cin>>s[i]>>d[i]; 43 int tl=st.length(); 44 int la=st[tl-1]-'0'; 45 int lb=st[tl-2]-'0'; 46 int lc=st[tl-3]-'0'; 47 int ld=st[tl-4]-'0'; 48 d[i]=ld*1000+lc*100+lb*10+la; 49 //cout<<i<<" "<<d[i]<<endl; 50 s[i]=st; 51 } 52 53 qsort(1,N); 54 for(int i=N;i>=1;i--) 55 { 56 //cout<<s[i]<<endl; 57 int tl=s[i].length(); 58 string tms=s[i]; 59 for(int j=0;j<=tl-6;j++) 60 cout<<tms[j]; 61 cout<<endl; 62 } 63 } 64 }