30tps!为什么全输出Failed
查看原帖
30tps!为什么全输出Failed
913288
3_14楼主2024/10/15 15:47
#include<bits/stdc++.h>
using namespace std;
const int MAX=111;
map<char,char>d;
void init(string a,int len,string b){
	for(int i=0;i<len;i++)
		d[a[i]]=b[i];
}
struct letters{
	char x,y;
}p[MAX];
bool cmp(letters e,letters r){
	return e.x>r.x;
}
bool check(string a,int len,string b){
	for(int i=0;i<len;i++){
		p[i].x=a[i];
		p[i].y=b[i];
	}
	sort(p,p+len,cmp);
	for(int i=0;i<len-1;i++)
		if(p[i].x==p[i+1].x&&p[i].y!=p[i+1].y)return true;
	int cnt1[MAX]={},cnt2[MAX]={};
	for(int i=0;i<len;i++)cnt1[a[i]-'a']++;
	for(int i=0;i<26;i++)if(cnt1[i]==0)return true;
	for(int i=0;i<len;i++)cnt2[b[i]-'a']++;
	for(int i=0;i<26;i++)if(cnt2[i]==0)return true;
	return false;
}
string need,m,y;
int main(){
	cin>>m>>y>>need;
	int lenm=m.size(),leny=y.size(),len=need.size();
	if(check(m,lenm,y))cout<<"Failed\n";
	else{
		init(m,lenm,y);
		for(int i=0;i<len;i++)
			cout<<d[need[i]];
		cout<<'\n';
	}
	return 0;
}
2024/10/15 15:47
加载中...