QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#815444 | #9884. Grid Construction | ucup-team5234# | WA | 1ms | 3548kb | C++23 | 5.3kb | 2024-12-15 14:27:37 | 2024-12-15 14:27:37 |
Judging History
answer
#include "bits/stdc++.h"
using namespace std;
#define rep(i, n) for(int i = 0; i < n; i ++)
vector<string> solve9(int w) {
vector<string> s(9, string(w, '.'));
vector<string> t(9, string(9, '.'));
vector<string> re(9, string(6, '.'));
s[0] = "<<<<<<<<^";
s[1] = "v.v.v.v.^";
s[2] = "v>.^.^.<^";
s[3] = "v.<^>>>.^";
s[4] = "v>.^.v.<^";
s[5] = "v.<<<v>.^";
s[6] = "v>.v.v.<^";
s[7] = "v.^.^.^.^";
s[8] = "v>>>>>>>>";
re[0] = "<<<<<<";
re[1] = "v.v.v.";
re[2] = ".<v>.^";
re[3] = ">.v.<^";
re[4] = ".^.^.^";
re[5] = ">>>>>>";
re[6] = ".v.v.v";
re[7] = "^.^.^.";
re[8] = ">>>>>>";
while((int)s[0].size() < w){
int a = s[0].size()-2;
rep(i, 9) s[i] = s[i].substr(0, a) + re[i] + s[i].substr(a);
}
return s;
}
vector<string> solve11(int w) {
vector<string> s(11, string(w, '.'));
vector<string> re(11, string(6, '.'));
s[0] = "<<<<<<<<<<^";
s[1] = "v.v.v.v.v.^";
s[2] = "v>.^.<v>.<^";
s[3] = "v.<^>.v.^.^";
s[4] = "v>.^.^.<<<^";
s[5] = "v.<^>>>.v.^";
s[6] = "v>.^.v.^.<^";
s[7] = "v.<<<v>>>.^";
s[8] = "v>.v.v.v.<^";
s[9] = "v.^.^.^.^.^";
s[10]= "v>>>>>>>>>>";
re[0] = "<<<<<<";
re[1] = "v.v.v.";
re[2] = "<v>.^.";
re[3] = ".v.<^>";
re[4] = "<v>.^.";
re[5] = ".v.<^>";
re[6] = "^.^.^.";
re[7] = ">>>>>>";
re[8] = "v.v.v.";
re[9] = ".^.^.^";
re[10]= ">>>>>>";
while((int)s[0].size() < w){
int a = s[0].size()-2;
rep(i, 11) s[i] = s[i].substr(0, a) + re[i] + s[i].substr(a);
}
return s;
}
void solve() {
int h, w;
cin >> h >> w;
if(h % 6 != w % 6) {
cout << "No" << endl;
} else if(h % 3 == 1) {
cout << "No" << endl;
} else if(h == 2) {
cout << "Yes" << endl;
cout << "<^" << endl;
cout << "v>" << endl;
} else if(h % 6 == 5 or h % 6 == 3) {
int base = 0;
vector<string> ans(h, string(w, '.'));
while(min(h, w) >= 12 or (h == w and h >= 6)) {
rep(i, w - 1) {
ans[base][base + i] = '<';
ans[h - 1 + base][w - 1 + base - i] = '>';
}
rep(i, h - 1) {
ans[base + i][w - 1 + base] = '^';
ans[h - 1 + base - i][base] = 'v';
}
for(int ii = 2; ii < w - 2; ii += 2) {
int i = base + ii;
ans[base + 1][i] = 'v';
ans[h + base - 2][i] = '^';
}
for(int ii = 2; ii < h - 2; ii += 2) {
int i = base + ii;
ans[i][base + 1] = '>';
ans[i][w + base - 2] = '<';
}
for(int ii = 3; ii < w - 3; ii += 2) {
int i = ii + base;
ans[base + 2][i] = '^';
ans[h + base - 3][i] = 'v';
}
for(int ii = 3; ii < h - 3; ii += 2) {
int i = ii + base;
ans[i][base + 2] = '<';
ans[i][w + base - 3] = '>';
}
base += 3;
h -= 6;
w -= 6;
}
if(h == 3 and w == 3) {
ans[base][base] = '<';
ans[base][base + 1] = '<';
ans[base][base + 2] = '^';
ans[base + 1][base + 2] = '^';
ans[base + 2][base + 2] = '>';
ans[base + 2][base + 1] = '>';
ans[base + 2][base] = 'v';
ans[base + 1][base] = 'v';
} else if (h == 5 and w == 5) {
rep(i, w - 1) {
ans[base][base + i] = '<';
ans[h - 1 + base][w - 1 + base - i] = '>';
}
rep(i, h - 1) {
ans[base + i][w - 1 + base] = '^';
ans[h - 1 + base - i][base] = 'v';
}
for(int ii = 2; ii < w - 2; ii += 2) {
int i = base + ii;
ans[base + 1][i] = 'v';
ans[h + base - 2][i] = '^';
}
for(int ii = 2; ii < h - 2; ii += 2) {
int i = base + ii;
ans[i][base + 1] = '>';
ans[i][w + base - 2] = '<';
}
} else if (min(h, w) == 9) {
assert(max(h, w) != min(h, w));
if(h < w) {
auto ret = solve9(w);
rep(i, h) rep(j, w) ans[base + i][base + j] = ret[i][j];
} else {
auto ret = solve9(h);
rep(i, h) rep(j, w) ans[base + i][base + j] = ret[j][i];
}
} else if (min(h, w) == 11) {
assert(max(h, w) != min(h, w));
if(h < w) {
auto ret = solve11(w);
rep(i, h) rep(j, w) ans[base + i][base + j] = ret[i][j];
} else {
auto ret = solve11(h);
rep(i, h) rep(j, w) ans[base + i][base + j] = ret[j][i];
}
} else {
cout << "No" << endl;
return;
}
cout << "Yes" << endl;
for(string s : ans) {
cout << s << endl;
}
} else cout << "No" << endl;
}
int main() {
int t; t = 1;
rep(i, t) solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3476kb
input:
3 3
output:
Yes <<^ v.^ v>>
result:
ok Correct
Test #2:
score: 0
Accepted
time: 0ms
memory: 3520kb
input:
4 4
output:
No
result:
ok Correct : No
Test #3:
score: 0
Accepted
time: 0ms
memory: 3548kb
input:
4 5
output:
No
result:
ok Correct : No
Test #4:
score: -100
Wrong Answer
time: 0ms
memory: 3520kb
input:
11 17
output:
Yes <<<<<<<<<<<<<<<<^ v.v.v.v.vv.v.v..^ v>.^.<v>.<v>.^.<^ v.<^>.v.^.v.<^>.^ v>.^.^.<<<v>.^.<^ v.<^>>>.v.v.<^>.^ v>.^.v.^.^.^.^.<^ v.<<<v>>>>>>>>>.^ v>.v.v.v.v.v.v.<^ v.^.^.^.^.^.^.^.^ v>>>>>>>>>>>>>>>>
result:
wrong answer Duplicate segment