QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#135582 | #6644. Red Black Grid | pssxx | WA | 13ms | 3640kb | C++20 | 3.7kb | 2023-08-05 18:41:24 | 2023-08-05 18:41:26 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const int maxn = 1e3 + 7;
int T = 1, n, k;
vector<PII> vec[5];
int cnt[10];
char ans[maxn][maxn];
void solve(){
cin >> n >> k;
if(n == 3) {
if(k == 1 || k == 11) {
cout << "Impossible\n";
return;
}
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 == 4) {
cout << "RBR" << '\n';
cout << "BBB" << '\n';
cout << "BBB" << '\n';
}
else if(k == 5) {
cout << "BRB" << '\n';
cout << "BBB" << '\n';
cout << "RBB" << '\n';
}
else if(k == 6) {
cout << "BRB" << '\n';
cout << "BBB" << '\n';
cout << "BRB" << '\n';
}
else if(k == 7) {
cout << "BRB" << '\n';
cout << "BBB" << '\n';
cout << "RBR" << '\n';
}
else if(k == 8) {
cout << "RBR" << '\n';
cout << "BBB" << '\n';
cout << "RBR" << '\n';
}
else if(k == 9) {
cout << "BRB" << '\n';
cout << "RBR" << '\n';
cout << "BBB" << '\n';
}
else if(k == 10) {
cout << "BBB" << '\n';
cout << "BRB" << '\n';
cout << "RBR" << '\n';
}
else if(k == 12) {
cout << "ABA" << '\n';
cout << "BAB" << '\n';
cout << "ABA" << '\n';
}
return;
}
for(int i = 0; i < 5; i++) cnt[i] = 0, vec[i].clear();
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
ans[i][j] = 'B';
if((i + j) % 2 == 0) {
int tmp = ((j + 1) <= n) + ((j - 1) >= 1) + ((i + 1) <= n) + ((i - 1) >= 1);
vec[tmp].push_back({i, j});
}
}
}
int flag = 0;
for(int i = 0; i <= vec[3].size(); i++) {
for(int j = 0; j <= vec[2].size(); j++) {
if((k - i * 3 - j * 2) >= 0 && (k - i * 3 - j * 2) % 4 == 0 && (k - i * 3 - j * 2) / 4 <= vec[4].size()) {
cnt[2] = j, cnt[3] = i, cnt[4] = (k - i * 3 - j * 2) / 4;
flag = 1;
break;
}
}
}
if(!flag) {
cout << "Impossible\n";
}
else {
cout << "Possible\n";
for(int i = 0; i < cnt[2]; i++) {
auto it = vec[2][i];
ans[it.first][it.second] = 'R';
}
for(int i = 0; i < cnt[3]; i++) {
auto it = vec[3][i];
ans[it.first][it.second] = 'R';
}
for(int i = 0; i < cnt[4]; i++) {
auto it = vec[4][i];
ans[it.first][it.second] = 'R';
}
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
cout << ans[i][j];
}
cout << '\n';
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> T;
while(T--) {
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3640kb
input:
2 3 6 3 1
output:
Possible BRB BBB BRB Impossible
result:
ok correct! (2 test cases)
Test #2:
score: -100
Wrong Answer
time: 13ms
memory: 3508kb
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 B Possible RB BR Impossible Possible RB BB Impossible Possible BB BB Possible ABA BAB ABA Impossible Possible BBB BRB RBR Possible BRB RBR BBB Possible RBR BBB RBR Possible BRB BBB RBR Possible BRB BBB BRB Possible BRB BBB RBB Possible RBR BBB BBB Possible BRB BBB BBB Possible RBB BBB BBB I...
result:
wrong answer Condition failed: "getNum(vec) == k" (test case 9)