有没有巨佬帮忙看看,熨斗上70,洛谷80
T1都切不了,只能说太菜了QAQ
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void read(int &p){
char z=getchar();int s=1;p=0;
while(z<'0'||z>'9'){if(z=='-')s=-1;z=getchar();}
while(z>='0'&&z<='9'){p=(p<<1)+(p<<3)+z-'0';z=getchar();}
p*=s;
}
int n,m,c[3003][26]={},v=1;
string s[3002],g[3002];
int main(){
freopen("dict.in","r",stdin);
freopen("dict.out","w",stdout);
read(n);read(m);
for(register int i(1);i<=n;++i){
cin>>s[i];
for(register int j(0);j<m;++j)++c[i][s[i][j]-'a'];
for(register int j(25);~j;--j)for(int k(1);k<=c[i][j];++k)g[i]+=char('a'+j);
}
if(n==1){
printf("1");
return 0;
}
for(register int i(2);i<=n;++i){
if(g[v]>g[i])v=i;//cout<<g[i]<<endl;
}//cout<<v;
int cnt=1;
string t;
for(register int i(1);i<=n;++i){
if(i!=v){
cnt=1;bool l=false;
for(register int j(0);j<26;++j){
for(register int k(1);k<=c[i][j];++k){
if(g[v][cnt]-'a'<j){
break;
}
else if(g[v][cnt]-'a'>j){
l=true;break;
}
++cnt;
}
}
if(l)printf("1");
else printf("0");
}
else{
bool l=true;
for(register int j(0);j<26;++j){
for(register int k(1);k<=c[i][j];++k){
t+=(char)('a'+j);
}
}
for(register int j(1);j<=n;++j){
string h;
if(j!=i){
if(t>=g[j]){
l=false;break;
}
}
}
l?printf("1"):printf("0");
}
}
return 0;
}