QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#188424#6644. Red Black GridrsjWA 0ms3608kbC++142.5kb2023-09-25 20:18:002023-09-25 20:18:01

Judging History

你现在查看的是最新测评结果

  • [2023-09-25 20:18:01]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3608kb
  • [2023-09-25 20:18:00]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define ex return cout<<"Impossible\n",void()
int a[1010][1010];
void mark(pair<int,int> x) {
	a[x.first][x.second]=1;
}
void get() {
	int n,k,i,j;
	cin>>n>>k;
	if(k==1||k==2*(n-1)*n-1) ex;
	if(n==1) {
		if(k) ex;
		cout<<"Possible\n";
		cout<<"R\n";
		return ;
	} else if(n==2) {
		if(k==0) {
			cout<<"Possible\n";
			cout<<"RR\n";
			cout<<"RR\n";
		} else if(k==4) {
			cout<<"Possible\n";
			cout<<"RB\n";
			cout<<"BR\n";
		} else if(k==2) {
			cout<<"Possible\n";
			cout<<"RB\n";
			cout<<"BB\n";
		} else ex;
	} else if(n==3) {
		cout<<"Possible\n";
		if(k==0) {cout<<"BBB\n";cout<<"BBB\n";cout<<"BBB\n";}
		else if(k==3) {cout<<"RBB\n";cout<<"BBB\n";cout<<"BBB\n";}
		else if(k==4) {cout<<"BRB\n";cout<<"BBB\n";cout<<"BBB\n";}
		else if(k==5) {cout<<"BBB\n";cout<<"BBR\n";cout<<"BBB\n";}
		else if(k==7) {cout<<"RBB\n";cout<<"BBR\n";cout<<"BBB\n";}
		else if(k==8) {cout<<"BRB\n";cout<<"BBR\n";cout<<"BBB\n";}
		else if(k==11) {cout<<"BRB\n";cout<<"RBR\n";cout<<"BBB\n";}
		else if(k==9) {cout<<"RRB\n";cout<<"RBR\n";cout<<"BBB\n";}
		else if(k==6) {cout<<"BRB\n";cout<<"BRB\n";cout<<"BBB\n";}
		else if(k==1) {cout<<"BBB\n";cout<<"BBB\n";cout<<"BBB\n";}
		else if(k==10) {cout<<"BRB\n";cout<<"BBR\n";cout<<"RBB\n";}
		else if(k==14) {cout<<"BRB\n";cout<<"RBR\n";cout<<"BRB\n";}
		else if(k==12) {cout<<"RRB\n";cout<<"RBR\n";cout<<"BRB\n";}
		else if(k==2) {cout<<"BBB\n";cout<<"BBB\n";cout<<"BBR\n";}
	}else {
		cout<<"Possible\n";
		for(i=1;i<=n;i++) for(j=1;j<=n;j++) a[i][j]=0;
		if(k==1||k==2*n*(n-1)) {
			k=2*n*(n-1)-k;
		}
		vector<pair<int,int>> a2,a3,a4;
		for(i=1;i<=n;i++) for(j=1;j<=n;j++) if((i+j)%2==0) {
			if((i==1||i==n)&&(j==1||j==n)) {
				a2.push_back(make_pair(i,j));
			} else if((i==1||i==n)||(j==1||j==n)) {
				a3.push_back(make_pair(i,j));
			} else {
				a4.push_back(make_pair(i,j));
			}
		}
		int c2=0,c3=0;
		while(k>=4) {
			k-=2,c2++;
		}
		if(k==2) {
			c2++;
		} else if(k==3) {
			c3++;
		}
		
		int pick3 = min(c2*2/6,(int)(a3.size()-c3)/2) * 2;
		c3 += pick3;
		c2 -= pick3*3/2;
		
		int pick4 = min(c2*2/4,(int)a4.size());
		c2 -= pick4*4/2;
		
		for(i=0;i<c3;i++) mark(a3[i]);
		for(i=0;i<pick4;i++) mark(a4[i]);
		for(i=0;i<c2;i++) mark(a2[i]);
		for(i=1;i<=n;i++) {for(j=1;j<=n;j++) cout<<(a[i][j]? "R":"B"); cout<<endl;}
	}
}
int main() {
	int cnt=0;
	int T; cin>>T; while(T--) {
		++cnt;
		cout<<"Starting TC"<<cnt<<endl;
		get();
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3608kb

input:

2
3 6
3 1

output:

Starting TC1
Possible
BRB
BRB
BBB
Starting TC2
Impossible

result:

wrong answer Condition failed: "A == B" (test case 1)