#include <bits/stdc++.h>
using namespace std;
int n,m;//个数 长度
const int N=5500;
//string s[N]; //原串
char s[N][N];
char mi[N][N];//存最小
char ma[N][N];//存最大
bool cmp(char a,char b){
return a<b;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>s[i];
for(int j=0;j<m;j++)mi[i][j]=s[i][j];
sort(mi[i],mi[i]+m);
for(int j=0;j<m;j++)ma[i][j]=mi[i][j];
reverse(ma[i],ma[i]+m);
}
for(int i=1;i<=n;i++){
int flag=1;
for(int j=1;j<=n;j++){
if(strcmp(mi[i],ma[j])==1){
//如果当前串最小情况比比较串最长情况还大
//说明0
flag=0;
break;
}
}
if(flag==1)cout<<1;
else cout<<0;
}
return 0;
}
lz洛谷自测只有50分,大样例测试一模一样,复杂度感觉也没问题,到底是怎么了