官方数据70 pts,求助
查看原帖
官方数据70 pts,求助
931633
742643qh楼主2023/11/27 22:31
#include<bits/stdc++.h>
using namespace std;
const int N=3e3+10;
int d[N][30];
int n,m;
int maxn[N],minn[N];
char ans[N];
char s[N];

bool Work(int i,int r,int j,int l) {
    if(r < l) return true;
    if(r > l) return false;
    if(r == l) {
    if(d[i][r] >= d[j][l]) return false;
    if(d[i][r] < d[j][l]) return true;
    }
    return true;
}

int main() {
    memset(minn,100,sizeof(minn));
    scanf("%d%d",&n,&m);
    for(int i = 1;i <= n;i++) {
        getchar();
        for(int j=1;j<=m;j++)
            scanf("%c",s+j);
        for(int j = 1;j <= m;j++) {
            int a;
            a = s[j]-'a'+1;
            d[i][a]++;
            if(a < minn[i]) minn[i] = a;
            if(a > maxn[i]) maxn[i] = a;
        }
    }
    for(int i = 1;i <= n;i++) {
        bool flag = true;
        for(int j = 1;j <= n;j++) {
            if(i == j) continue;
            flag=Work(i,minn[i],j,maxn[j]);
            if(!flag) break;
        }
        if(!flag)  ans[i] = '0';
        else   ans[i] = '1';
    }
    for(int i=1;i<=n;i++) printf("%c",ans[i]);
    return 0;
}
2023/11/27 22:31
加载中...