QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#188427#6644. Red Black GridrsjWA 27ms3608kbC++142.3kb2023-09-25 20:19:462023-09-25 20:19:46

Judging History

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

  • [2023-09-25 20:19:46]
  • 评测
  • 测评结果:WA
  • 用时:27ms
  • 内存:3608kb
  • [2023-09-25 20:19:46]
  • 提交

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==2) {cout<<"RBB\n";cout<<"BBB\n";cout<<"BBB\n";}
		else if(k==3) {cout<<"BRB\n";cout<<"BBB\n";cout<<"BBB\n";}
		else if(k==5) {cout<<"RBB\n";cout<<"BBR\n";cout<<"BBB\n";}
		else if(k==6) {cout<<"BRB\n";cout<<"BBR\n";cout<<"BBB\n";}
		else if(k==4) {cout<<"RRB\n";cout<<"RBB\n";cout<<"BBB\n";}
		else if(k==9) {cout<<"BRB\n";cout<<"RBR\n";cout<<"BBB\n";}
		else if(k==7) {cout<<"RRB\n";cout<<"RBR\n";cout<<"BBB\n";}
		else if(k==8) {cout<<"BRB\n";cout<<"BBR\n";cout<<"RBB\n";}
		else if(k==12) {cout<<"BRB\n";cout<<"RBR\n";cout<<"BRB\n";}
		else if(k==10) {cout<<"RRB\n";cout<<"RBR\n";cout<<"BRB\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;
		get();
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3608kb

input:

2
3 6
3 1

output:

Possible
BRB
BBR
BBB
Impossible

result:

ok correct! (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 27ms
memory: 3568kb

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
BRB
RBR
BRB
Impossible
Possible
RRB
RBR
BRB
Possible
BRB
RBR
BBB
Possible
BRB
BBR
RBB
Possible
RRB
RBR
BBB
Possible
BRB
BBR
BBB
Possible
RBB
BBR
BBB
Possible
RRB
RBB
BBB
Possible
BRB
BBB
BBB
Possible
RBB
BBB
BBB
I...

result:

wrong answer Condition failed: "getNum(vec) == k" (test case 20)