QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#135577 | #6644. Red Black Grid | pssxx | WA | 12ms | 3568kb | C++20 | 3.7kb | 2023-08-05 18:32:50 | 2023-08-05 18:32:54 |
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;
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);
// cerr << i << ' ' << j << ' ' << tmp << '\n';
vec[tmp].push_back({i, j});
}
}
}
// for(int i = 2; i <= 4; i++) {
// cerr << vec[i].size() << '\n';
// }
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 << "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';
}
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 == 1) {
int tmp = ((j + 1) <= n) + ((j - 1) >= 1) + ((i + 1) <= n) + ((i - 1) >= 1);
// cerr << i << ' ' << j << ' ' << tmp << '\n';
vec[tmp].push_back({i, j});
}
}
}
// for(int i = 2; i <= 4; i++) {
// cerr << vec[i].size() << '\n';
// }
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;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 3436kb
input:
2 3 6 3 1
output:
Possible RBB BRB BBB Impossible
result:
ok correct! (2 test cases)
Test #2:
score: -100
Wrong Answer
time: 12ms
memory: 3568kb
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 RBR BRB RBR Impossible Possible RBR BRB RBB Possible BRB RBR BBB Possible RBR BRB BBB Impossible Possible RBB BRB BBB Impossible Possible BBB BRB BBB Possible BRB BBB BBB Possible RBB BBB BBB Impossible Possible B...
result:
wrong answer Condition failed: "A == B" (test case 12)