题目描述
题目入口
题解
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
const int maxn = 110;
string s[maxn];
int idx[maxn], before[maxn];
int Cnt(string s)
{
int len = s.length();
int cnt = 0;
for (int i = 0; i < len; i++)
if(s[i]=='1')
cnt++;
return cnt;
}
bool cmp(const int &a,const int &b)
{
int c1 = Cnt(s[a]), c2 = Cnt(s[b]);
if(c1==c2)
return before[a] < before[b];
return c1 < c2;
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> s[i];
idx[i] = before[i] = i;
}
sort(idx, idx + n, cmp);
for (int i = 0; i < n; i++)
cout << s[idx[i]] << endl;
return 0;
}