PKU1007
問題分を読めればわかります
#include <cstdio> #include <algorithm> #include <vector> using namespace std; int m, n; vector<pair<int, int> > so; char dna[50][100]; bool comp(const pair<int, int>& a, const pair<int, int>& b){ return a.first < b.first; } int main(){ scanf("%d %d", &n, &m); getchar(); for(int i = 0; i < m; i++){ int rank = 0; for(int j = 0; j < n; j++){ scanf("%c", &dna[j][i]); } getchar(); for(int j = 0; j < n; j++){ for(int t = j; t < n; t++){ if(dna[j][i] > dna[t][i]) rank++; } } so.push_back(make_pair(rank, i)); } sort(so.begin(), so.end(), comp); for(vector<pair<int, int> >::iterator it = so.begin(); it != so.end(); it++){ for(int i = 0; i < n; i++){ pair<int, int> tmp = *it; printf("%c", dna[i][tmp.second]); if(i == n - 1) printf("\n"); } } return 0; }