QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#188421 | #6644. Red Black Grid | rsj | RE | 1ms | 3500kb | C++14 | 2.4kb | 2023-09-25 20:16:28 | 2023-09-25 20:16:29 |
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==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