QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#498154#6644. Red Black GridrgnerdplayerWA 5ms3808kbC++202.3kb2024-07-30 01:16:332024-07-30 01:16:34

Judging History

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

  • [2024-07-30 01:16:34]
  • 评测
  • 测评结果:WA
  • 用时:5ms
  • 内存:3808kb
  • [2024-07-30 01:16:33]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

using i64 = long long;

int main() {
    cin.tie(nullptr)->sync_with_stdio(false);

    int t;
    cin >> t;

    auto solve = [&]() {
        int n, k;
        cin >> n >> k;

        auto work = [&](auto work, int n, int k) -> vector<string> {
            if (k > n * (n - 1)) {
                auto res = work(work, n, 2 * n * (n - 1) - k);
                if (!res.empty()) {
                    for (int i = 0; i < n; i++) {
                        for (int j = 0; j < n; j++) {
                            if ((i + j) % 2 == 1) {
                                res[i][j] ^= 'R' ^ 'B';
                            }
                        }
                    }
                }
                return res;
            }
            if (k == 1) {
                return {};
            }
            vector res(n, string(n, 'R'));
            if (n == 3) {
                if (k == 0) {

                } else if (k == 2) {
                    res[0][0] = 'B';
                } else if (k == 3) {
                    res[0][1] = 'B';
                } else if (k == 4) {
                    res[1][1] = 'B';
                } else if (k == 5) {
                    res[0][1] = res[2][0] = 'B';
                } else if (k == 6) {
                    res[0][1] = res[1][0] = 'B';
                }
                return res;
            }
            if (k % 2 == 1) {
                res[0][2] = 'B';
                k -= 3;
            }
            for (int i = 1; i < n - 1; i++) {
                for (int j = 1; j < n - 1; j++) {
                    if ((i + j) % 2 == 0 && k >= 4) {
                        k -= 4;
                        res[i][j] = 'B';
                    }
                }
            }
            if (k == 2) {
                res[0][0] = 'B';
                k -= 2;
            }
            return res;
        };
        
        auto ans = work(work, n, k);

        if (ans.empty()) {
            cout << "Impossible\n";
        } else {
            cout << "Possible\n";
            for (int i = 0; i < n; i++) {
                cout << ans[i] << '\n';
            }
        }
    };

    while (t--) {
        solve();
    }
    
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

2
3 6
3 1

output:

Possible
RBR
BRR
RRR
Impossible

result:

ok correct! (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 5ms
memory: 3600kb

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
BR
RR
Impossible
Possible
RR
RR
Possible
RBR
BRB
RBR
Impossible
Possible
BBR
BRB
RBR
Possible
RRR
BRB
RBR
Possible
RBR
BBB
RBR
Possible
RRR
BRB
BBR
Possible
RBR
BRR
RRR
Possible
RBR
RRR
BRR
Possible
RRR
RBR
RRR
Possible
RBR
RRR
RRR
Possible
BRR
RRR
RRR
I...

result:

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