QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#188424 | #6644. Red Black Grid | rsj | WA | 0ms | 3608kb | C++14 | 2.5kb | 2023-09-25 20:18:00 | 2023-09-25 20:18:01 |
Judging History
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)