不明白为什么只有90分,TLE1个,这可是橙题啊
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
string s[3005],ss[3005],s1[3005],s2[3005];
bool cmp(char ch1,char ch2)
{
return ch1>ch2;
}
string ssort(string t,int tp)
{
string tt="";
char a[3005];
for(int i=0;i<m;i++)
{
a[i]=t[i];
}
if(tp==1)sort(a,a+m);//最小字典序
if(tp==2)sort(a,a+m,cmp);//最大字典序
for(int i=0;i<m;i++)
{
tt+=a[i];
}
return tt;
}
signed main()
{
//freopen("dict4.in","r",stdin);
//freopen("dict4.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>s[i];
for(int i=1;i<=n;i++)
{
s1[i]=ssort(s[i],1);
s2[i]=ssort(s[i],2);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)ss[j]=s[j];
if(n==1)
{
cout<<1;
continue;
}
else
{
for(int j=1;j<=n;j++)
{
if(i==j)ss[j]=s1[j];
else ss[j]=s2[j];
}
bool flag=true;
for(int j=1;j<=n;j++)
{
//cout<<ss[j]<<" ";
if(i!=j&&ss[i]>=ss[j])
{
flag=false;
break;
}
}
cout<<flag;
}
}
return 0;
}