10分求调
查看原帖
10分求调
1055920
taoqiniu楼主2024/11/29 20:34
#include<bits/stdc++.h>
using namespace std;
set<int> se;
char s[3010][3010],t[3010],maxx[3010],minn[3010][3010];
int n,m;
bool flag;
bool cmp1(char a,char b){
	return a<b;
}
bool cmp2(char a,char b){
	return a>b;
}
int check(int x){
	if(x==1) return 1;
	for(int i=1;i<=m;i++){
		if(t[i]>maxx[i]) return 1;
		if(t[i]<maxx[i]) return 2;
	}	
	return 3;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) cin>>t[j];
		sort(t+1,t+1+n,cmp1);
		for(int j=1;j<=m;j++) s[i][j]=t[j];
		sort(t+1,t+1+n,cmp2);
		for(int j=1;j<=m;j++) minn[i][j]=t[j];
		int tt=check(i);
		if(tt=1){
			for(int j=1;j<=m;j++) maxx[j]=t[j];
			se.clear();
			se.insert(i);
		}
		if(tt=3) se.insert(i);
	}
	for(int i=1;i<=n;i++){
		if(se.find(i)!=se.end() && se.size()==1){
			flag=1;
			for(int k=1;k<=n;k++){
				if(k==i) continue;
				for(int j=1;j<=m;j++){
					if(s[i][j]>minn[k][j]){
						flag=0;
						break;
					}
				}
			}
			if(flag) cout<<1;
			else cout<<0;
		}else{
			flag=1;
			for(int j=1;j<=m;j++){
				if(s[i][j]>maxx[j]){
					flag=0;
					cout<<0;
					break;
				}
				if(s[i][j]<maxx[j]){
					flag=0;
					cout<<1;
					break;
				}
			}
			if(flag) cout<<0;
		}
	}
	return 0;
}

调了很久 但不知道哪里错了
码风丑

2024/11/29 20:34
加载中...