Source Code
Problem: 1007 | User: cug_fish2008 | |
Memory: 300K | Time: 47MS | |
Language: C++ | Result: Accepted |
- Source Code
#include <iostream> using namespace std; void change(char &x,char &y); struct Node { char h[50]; int sum; }; int main() { Node k[101]; Node ko[101]; char ch; int m,n; cin>>n>>m; if(n<1||m<1)return 0; for(int i=1;i<=m;i++) {cin>>k[i].h;k[i].sum=0;ko[i]=k[i];} if(n==1)goto exit; for(int i=1;i<=m;i++) { int tatal=0; bool b=true; while(b) { int x_t=0; for(int j=0;j<=n-2;j++) { if(k[i].h[j]>k[i].h[j+1]) {change(k[i].h[j],k[i].h[j+1]);x_t++;tatal++;} } if(x_t==0)b=false; } ko[i].sum=tatal; } exit: int cpr[101]; Node kok[101]; for(int i=1;i<=m;i++)cpr[i]=1; for(int i=2;i<=m;i++) { for(int j=1;j<i;j++) { if(ko[i].sum>=ko[j].sum)cpr[i]++; else cpr[j]++; } } for(int i=1;i<=m;i++) kok[cpr[i]]=ko[i]; for(int i=1;i<=m;i++) cout<<kok[i].h<<endl; return 0; } void change(char &x,char &y) { char t; t=x;x=y;y=t; }