help
查看原帖
help
212423
FrozenDream楼主2022/8/17 20:02

#44 WA

#include<bits/stdc++.h>
using namespace std;
string a[7];
char b[100][100],c[100][100];
int f[7][7][7],x,y,z;
bool cmp(string a,string b){
	return a<b;
}
int main(){
	memset(b,'.',sizeof(b));
	memset(c,'.',sizeof(c));
	for(int i=1;i<=6;i++){
		cin>>a[i];
	}
	sort(a+1,a+7);
	for(int i=1;i<=6;i++){
		for(int j=1;j<=6;j++){
			for(int k=1;k<=6;k++){
				if(a[i].size()+a[j].size()==a[k].size()+1){
					f[i][j][k]=1;
				}
			}
		}
	}
	for(int i=1;i<=6;i++){
		for(int j=1;j<=6;j++){
			for(int k=1;k<=6;k++){
				for(int ii=1;ii<=6;ii++){
					for(int jj=1;jj<=6;jj++){
						for(int kk=1;kk<=6;kk++){
							if(f[i][j][k]==1&&f[ii][jj][kk]==1&&i!=ii&&i!=jj&&i!=kk&&j!=ii&&j!=jj&&j!=kk&&k!=ii&&k!=jj&&k!=kk){
								if(a[i][a[i].size()-1]==a[kk][0]&&a[j][0]==a[kk][a[kk].size()-1]){
									if(a[ii][a[ii].size()-1]==a[k][0]&&a[jj][0]==a[k][a[k].size()-1]){
										if(a[kk][a[ii].size()-1]==a[k][a[i].size()-1]&&a[i][0]==a[ii][0]&&a[j][a[j].size()-1]==a[jj][a[jj].size()-1]){
											for(int q=0;q<a[i].size();q++){
												b[0][q]=a[i][q];
											}
											for(int q=0;q<a[ii].size();q++){
												b[q][0]=a[ii][q];
											}
											for(int q=0;q<a[kk].size();q++){
												b[q][a[i].size()-1]=a[kk][q];
											}
											for(int q=0;q<a[k].size();q++){
												b[a[ii].size()-1][q]=a[k][q];
											}
											for(int q=0;q<a[jj].size();q++){
												b[q+a[ii].size()-1][a[k].size()-1]=a[jj][q];
											}
											for(int q=0;q<a[j].size();q++){
												b[a[kk].size()-1][q+a[i].size()-1]=a[j][q];
											}
											int flg=0;
											
											for(int q=0;q<a[kk].size();q++){
													for(int p=0;p<a[k].size();p++){
														if(b[q][p]<c[q][p]){
															flg=1;
													//		cout<<q<<" "<<p<<endl;
															goto mm;
														}else if(b[q][p]>c[q][p]){
															goto mm;
														}
													}
													if(a[k].size()<a[y].size()){
														flg=1;
														goto mm;
													}else if(a[k].size()>a[y].size()){
														goto mm;
													}
												}
											mm:;
//											for(int q=0;q<a[kk].size();q++){
//												for(int p=0;p<a[k].size();p++){
//													cout<<b[q][p];
//												}
//												cout<<endl;
//											}
//											cout<<endl;
											if(flg==1||c[0][0]=='.'){
												x=kk;
												y=k;
												z=i; 
												for(int q=0;q<a[kk].size();q++){
													for(int p=0;p<a[k].size();p++){
														c[q][p]=b[q][p];
													}
												}
												memset(b,'.',sizeof(b));
											}
											
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	if(c[0][0]!='.'){
		for(int q=0;q<a[x].size();q++){
			for(int p=0;p<a[y].size();p++){
				cout<<c[q][p];
			}
			cout<<endl;
		}
	}else{
		cout<<"Impossible";
	}
	
}
2022/8/17 20:02
加载中...