QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#188421#6644. Red Black GridrsjRE 1ms3500kbC++142.4kb2023-09-25 20:16:282023-09-25 20:16:29

Judging History

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

  • [2023-09-25 20:16:29]
  • 评测
  • 测评结果:RE
  • 用时:1ms
  • 内存:3500kb
  • [2023-09-25 20:16:28]
  • 提交

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==2) {
		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() {
	// freopen("1.in","r",stdin);
	int T; cin>>T; while(T--) get();
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3500kb

input:

2
3 6
3 1

output:

Possible
RBB
BRB
BBB
Impossible

result:

ok correct! (2 test cases)

Test #2:

score: -100
Runtime Error

input:

4424
1 0
2 4
2 3
2 2
2 1
2 0
3 12
3 11
3 10
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
3 1
3 0
4 24
4 23
4 22
4 21
4 20
4 19
4 18
4 17
4 16
4 15
4 14
4 13
4 12
4 11
4 10
4 9
4 8
4 7
4 6
4 5
4 4
4 3
4 2
4 1
4 0
5 40
5 39
5 38
5 37
5 36
5 35
5 34
5 33
5 32
5 31
5 30
5 29
5 28
5 27
5 26
5 25
5 24
5 23
5 22
5 21
5...

output:

Possible
R
Possible
RB
BR
Impossible
Possible
RB
BB
Impossible
Possible
RR
RR
Possible
BBB
BBB
BBB
Impossible
Possible
RBR
BRB
RBB

result: