QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#127850 | #6644. Red Black Grid | Paradox | WA | 20ms | 5596kb | C++20 | 4.3kb | 2023-07-20 09:53:11 | 2023-07-20 09:53:13 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
#define Yes cout<<"YES\n"
#define No cout<<"NO\n"
#define pb push_back
#define endl '\n'
int n,m,k;
const int N=1e3+10;
int a[N][N],vis[N][N];
int num;
void init(){
int tmp=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]=tmp;
if(tmp) num++;
tmp^=1;
if(a[i][j]){
if(i==1 || i==n){
if(j-1 && n-j) vis[i][j]=3;
}
else if(j==1 || j==n){
if(i-1 && n-i) vis[i][j]=3;
}
else vis[i][j]=4;
}
}
if(n&1);
else tmp^=1;
}
vis[1][1]=vis[1][n]=vis[n][1]=vis[n][n]=2;
// for(int i=1;i<=n;i++){
// for(int j=1;j<=n;j++) cout<<(a[i][j]?"R ":"B ");cout<<endl;}
}
bool solve () {
cin>>n>>k;
int tmp=2*(n-1)*n;
if (k==1 || k==tmp-1){
cout<<"Impossible\n";
return 0;
}
if(k==0){
cout<<"Possible\n";
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<"R";
}
cout<<"\n";
}
return 0;
}
if(n==3){
cout<<"Possible\n";
if (k == 0) cout<<"RRR\nRRR\nRRR\n";
else if (k == 2) cout<<"BRR\nRRR\nRRR\n";
else if (k == 3) cout<<"RBR\nRRR\nRRR\n";
else if (k == 4) cout<<"RRR\nRBR\nRRR\n";
else if (k == 5) cout<<"BRR\nRRB\nRRR\n";
else if (k == 6) cout<<"RRR\nBRB\nRRR\n";
else if (k == 7) cout<<"RRR\nBRB\nRBB\n";
else if (k == 8) cout<<"RBR\nBBB\nRBR\n";
else if (k == 9) cout<<"RRR\nBRB\nRBR\n";
else if (k == 10) cout<<"BBR\nBRB\nRBR\n";
else if (k == 12) cout<<"RBR\nBRB\nRBR\n";
return 0;
}
init();
if(k==tmp) return 1;
bool flag=0;
int x=tmp-k;
// cout<<tmp<<" "<<x<<endl;
const int n2=4/((n&1)?1:2);
int n3;if(n&1){n3=4*((n+1)/2-2);}else{n3=4*(n/2-1);}
const int n4=num-n2-n3;
// cout<<n2<<" "<<n3<<" "<<n4<<endl;
int c4=x/4,c3,c2,c1;
// cout<<c4<<"__\n";
if(c4<=n4){
int t=x%4;
// cout<<t<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
if(vis[i][j]==4)
if(c4){a[i][j]^=1;c4--;}
}
if(t==3) a[1][3]^=1;
else if(t==2) a[1][1]^=1;
else if(t==1){
a[1][3]^=1;a[1][1]^=1;
a[2][2]^=1;
}
return 1;
}
else{
c3=(x-n4*4)/3;
// cout<<c3<<"==\n";
if(c3<=n3){
int t=(x-n4*4)%3;
// cout<<"____"<<t<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
if(vis[i][j]==4) a[i][j]^=1;
else{
if(vis[i][j]==3){
if(c3){a[i][j]^=1;c3--;}
}
}
}
if(t==2) a[1][1]^=1;
else if(t==1){
a[n][n]^=1;
a[1][1]^=1;
a[1][3]^=1;
}
}
else{
c2=(x-4*n4-3*n3)/2;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
if(vis[i][j]>=3) a[i][j]^=1;
else{
if(vis[i][j]==2){
if(c2){a[i][j]^=1;c2--;}
}
}
}
int t=(x-n4*4-n3*3)%2;
if(t==1){
if(n&1){
a[1][3]^=1;
a[1][1]^=1;a[1][n]^=1;
}
else{
a[1][1]^=1;
a[n][n]^=1;
a[1][3]^=1;
}
}
}
return 1;
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin>>T; while (T--){
if(solve()){
cout<<"Possible\n";
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++) cout<<(a[i][j]?"R":"B");cout<<endl;}
}
// else cout<<"Impossible\n";
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3476kb
input:
2 3 6 3 1
output:
Possible RRR BRB RRR Impossible
result:
ok correct! (2 test cases)
Test #2:
score: -100
Wrong Answer
time: 20ms
memory: 5596kb
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 BB BR Impossible Possible RR RR Possible RBR BRB RBR Impossible Possible BBR BRB RBR Possible RRR BRB RBR Possible RBR BBB RBR Possible RRR BRB RBB Possible RRR BRB RRR Possible BRR RRB RRR Possible RRR RBR RRR Possible RBR RRR RRR Possible BRR RRR RRR I...
result:
wrong answer Condition failed: "getNum(vec) == k" (test case 32)