P9326求条玄关
  • 板块学术版
  • 楼主RAY091016
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/1/16 21:26
  • 上次更新2025/1/17 10:32:39
查看原帖
P9326求条玄关
772875
RAY091016楼主2025/1/16 21:26

rt,WA on #26

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,r,c,flag;
char a[3000][3000];
signed main(){
	cin>>n>>m>>r>>c;
	if(r>n||c>m||r<0||c<0){
		flag=1;
	}
	else{
		if(r==0){
			if(c==0){
				for(int i=1;i<=n;i++){
					for(int j=1;j<=m;j++){
						a[i][j]=(char)((i+j-2)%26+'a');
					}
				}
			}
			else if(c==m){
				if(m==1){
					flag=1;
				}
				else{
					for(int i=1;i<=n;i++){
						for(int j=1;j<=m;j++){
							a[i][j]=(char)((j-1)%26+'a');
						}
					}
				}
			}
			else{
				for(int i=1;i<=n;i++){
					for(int j=1;j<=c;j++){
						a[i][j]=(char)((j-1)%26+'a');
					}
				}
				for(int i=1;i<=n;i++){
					for(int j=c+1;j<=m;j++){
						a[i][j]=(char)((i+j-2)%26+'a');
					}
				}
			}
		}
		else if(r==n){
			if(c==0){
				if(n==1){
					flag=1;
				}
				else{
					for(int i=1;i<=n;i++){
						for(int j=1;j<=m;j++){
							a[i][j]=(char)((i-1)%26+'a');
						}
					}
				}
			}
			else if(c==m){
				for(int i=1;i<=n;i++){
					for(int j=1;j<=m;j++){
						a[i][j]='a';
					}
				}
			}
			else{
				if(m%2==0&&c%2==1){
					flag=1;
				}
				else if((m%2==1&&c%2==0)||(m%2==0&&c%2==0)){
					for(int i=1;i<=n;i++){
						for(int j=1;j<=c/2;j++){
							a[i][j]=a[i][m-j+1]='a';
						}
					}
					for(int i=2;i<=n;i++){
						for(int j=c/2+1;j<=m-c/2;j++){
							a[i][j]='a';
						}
					}
					for(int j=c/2+1;j<=m-c/2;j++){
						a[1][j]='b';
					}
				}
				else{
					for(int i=1;i<=n;i++){
						for(int j=1;j<=c/2;j++){
							a[i][j]=a[i][m-j+1]='a';
						}
					}
					for(int i=2;i<=n;i++){
						for(int j=c/2+1;j<=m-c/2;j++){
							a[i][j]='a';
						}
					}
					for(int j=c/2+1;j<=m-c/2;j++){
						a[1][j]='b';
					}
					for(int i=1;i<=n;i++){
						a[i][m/2+1]='a';
					}
				}
			}
		}
		else{
			if(c==0){
				for(int i=1;i<=r;i++){
					for(int j=1;j<=m;j++){
						a[i][j]='a';
					}
				}
				for(int i=r+1;i<=n;i++){
					for(int j=1;j<=m;j++){
						a[i][j]=(char)((i+j-2)%26+'a');
					}
				}
			}
			else if(c==m){
				if(n%2==0&&r%2==1){
					flag=1;
				}
				else if((n%2==1&&r%2==0)||n%2==0&&r%2==0){
					for(int i=1;i<=r/2;i++){
						for(int j=1;j<=m;j++){
							a[i][j]=a[n-i+1][j]='a';
						}
					}
					for(int i=r/2+1;i<=n-r/2;i++){
						for(int j=2;j<=m;j++){
							a[i][j]='a';
						}
					}
					for(int i=r/2+1;i<=n-r/2;i++){
						a[i][1]='b';
					}
				}
				else{
					for(int i=1;i<=r/2;i++){
						for(int j=1;j<=m;j++){
							a[i][j]=a[n-i+1][j]='a';
						}
					}
					for(int i=r/2+1;i<=n-r/2;i++){
						for(int j=2;j<=m;j++){
							a[i][j]='a';
						}
					}
					for(int i=r/2+1;i<=n-r/2;i++){
						a[i][1]='b';
					}
					for(int j=1;j<=m;j++){
						a[n/2+1][j]='a';
					}
				}
			}
			else{
				for(int i=1;i<=r;i++){
					for(int j=1;j<=m;j++){
						a[i][j]='a';
					}
				}
				for(int i=r+1;i<=n;i++){
					for(int j=1;j<=c;j++){
						a[i][j]='a';
					}
					for(int j=c+1;j<=m;j++){
						a[i][j]='b';
					}
				} 
			}
		}
	}
	if(flag){
		cout<<"IMPOSSIBLE";
	}
	else{
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cout<<a[i][j];
			}
			cout<<endl;
		}
	}
	return 0;
}
2025/1/16 21:26
加载中...