Task: | Ruudukko |
Sender: | ArktinenKarpalo |
Submission time: | 2020-11-07 22:04:09 +0200 |
Language: | C++ (C++17) |
Status: | READY |
Result: | 5 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 5 |
#2 | WRONG ANSWER | 0 |
#3 | WRONG ANSWER | 0 |
#4 | WRONG ANSWER | 0 |
#5 | WRONG ANSWER | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.01 s | 1, 5 | details |
#2 | WRONG ANSWER | 0.01 s | 2, 5 | details |
#3 | WRONG ANSWER | 0.01 s | 3, 5 | details |
#4 | WRONG ANSWER | 0.01 s | 4, 5 | details |
#5 | WRONG ANSWER | 0.01 s | 5 | details |
#6 | WRONG ANSWER | 0.01 s | 5 | details |
#7 | WRONG ANSWER | 0.01 s | 2, 5 | details |
#8 | WRONG ANSWER | 0.01 s | 2, 5 | details |
#9 | WRONG ANSWER | 0.01 s | 3, 5 | details |
#10 | WRONG ANSWER | 0.01 s | 3, 5 | details |
#11 | WRONG ANSWER | 0.01 s | 3, 5 | details |
#12 | WRONG ANSWER | 0.01 s | 3, 5 | details |
#13 | WRONG ANSWER | 0.01 s | 4, 5 | details |
#14 | WRONG ANSWER | 0.01 s | 5 | details |
#15 | WRONG ANSWER | 0.01 s | 3, 5 | details |
#16 | WRONG ANSWER | 0.01 s | 5 | details |
Compiler report
input/code.cpp: In function 'bool test(int, int)': input/code.cpp:31:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(rte.size() == n*m) { ~~~~~~~~~~~^~~~~~ input/code.cpp: In function 'int main()': input/code.cpp:168:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(ans.size() == n*m-1) { ~~~~~~~~~~~^~~~~~~~
Code
#include <bits/stdc++.h> #define ll long long #define ld long double #define M 1000000007 using namespace std; int n, m, sx, sy, gx, gy; stack<char> rte; bitset<64> vis[55]; bool chk(int x, int y) { if(x == 0 || y == 0 || x > m || y > n) return false; if(vis[y][x]) return false; return true; } vector<pair<char,pair<int,int>>> v= { {'R', {1, 0}}, {'L', {-1, 0}}, {'D', {0, -1}}, {'U', {0, 1}} }; ll cnt = 0; bool test(int x, int y) { if(x == gx && y == gy) { if(rte.size() == n*m) { vector<char> ans; while(rte.size() > 1) { ans.push_back(rte.top()); rte.pop(); } cout << "YES\n"; reverse(ans.begin(), ans.end()); for(auto u:ans) cout <<u; cout<<"\n"; return true; } return false; } for(auto u:v) { int xx = x+u.second.first; int yy = y+u.second.second; if(chk(xx, yy)) { rte.push(u.first); vis[yy][xx] = 1; if(test(xx, yy)) return true; vis[yy][xx] = 0; rte.pop(); } } return false; } int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(); int t; cin >> t; for(int g=0; g<t; g++) { cin >> n >> m >> sy >> sx >> gy >> gx; if(false) { rte.push('S'); vis[sy][sx] = true; if(!test(sx, sy)) cout << "NO\n"; while(!rte.empty()) rte.pop(); for(int i=1; i<=50; i++) for(int j=1; j<=50; j++) { vis[i][j] = 0; } continue; } bool swx = false; bool swy = false; if(sx > gx) { swx = true; swap(sx, gx); } if(sy > gy || (n == 2 && sy == 2)) { swy = true; swap(sy, gy); } vector<char> ans; if(n == 1) { if(sx == 1 && gx == m) { for(int i=1; i<m; i++) ans.push_back('R'); } else if(sx == m && gx == 1) { for(int i=1; i<m; i++) ans.push_back('L'); } else { } } else if(n == 2) { if(sy == gy) { if((gx-sx)%2 == 1) { for(int i=1; i<sx; i++) { ans.push_back('L'); } ans.push_back('D'); for(int i=1; i<sx; i++) { ans.push_back('R'); } for(int i=sx; i+2<=gx; i+=2) { ans.push_back('R'); ans.push_back('U'); ans.push_back('R'); ans.push_back('D'); } ans.push_back('R'); for(int i=gx; i<m; i++) ans.push_back('R'); ans.push_back('U'); for(int i=gx; i<m; i++) ans.push_back('L'); } } else { if((gx-sx)%2 == 0) { for(int i=1; i<sx; i++) { ans.push_back('L'); } bool k = false; if(gx != sx || ans.size() > 0) { ans.push_back('D'); k = true; } for(int i=1; i<sx; i++) { ans.push_back('R'); } for(int i=sx; i<gx; i+=2) { if(i > sx) ans.push_back('D'); ans.push_back('R'); ans.push_back('U'); ans.push_back('R'); } for(int i=gx; i<m; i++) ans.push_back('R'); if(gx != sx || !k) ans.push_back('D'); for(int i=gx; i<m; i++) ans.push_back('L'); } if(gx == sx) { if(gx != 1 && gx != m) ans.clear(); } if((gx-sx) == 1) ans.clear(); } } else if(n == 3) { return 0; } else if(n == 4) { return 0; } else { return 0; } if(ans.size() == n*m-1) { if(swx) reverse(ans.begin(), ans.end()); cout << "YES\n"; for(auto u:ans) { if(u == 'R') { if(swx) cout << "L"; else cout << "R"; } else if(u == 'L') { if(!swx) cout << "L"; else cout << "R"; } else if(u == 'U') { if(swy) cout << "D"; else cout << "U"; } else if(u == 'D') { if(!swy) cout << "D"; else cout << "U"; } } cout << "\n"; } else { cout << "NO\n"; } } }
Test details
Test 1
Group: 1, 5
Verdict: ACCEPTED
input |
---|
100 1 45 1 45 1 1 1 18 1 1 1 10 1 47 1 17 1 30 1 33 1 28 1 20 ... |
correct output |
---|
YES LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL... |
user output |
---|
YES LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL... Truncated |
Test 2
Group: 2, 5
Verdict: WRONG ANSWER
input |
---|
100 2 43 1 33 1 21 2 2 1 1 2 2 2 32 1 1 2 8 2 14 1 12 1 14 ... |
correct output |
---|
NO NO NO NO YES ... |
user output |
---|
NO NO NO NO YES ... Truncated |
Test 3
Group: 3, 5
Verdict: WRONG ANSWER
input |
---|
100 3 4 2 1 2 4 3 38 2 24 1 22 3 29 2 23 2 3 3 8 3 1 1 2 ... |
correct output |
---|
NO NO NO YES RRRRRRRUULDLULDLULDLLUR ... |
user output |
---|
(empty) |
Test 4
Group: 4, 5
Verdict: WRONG ANSWER
input |
---|
100 4 25 2 19 1 5 4 13 3 10 4 12 4 7 3 1 4 2 4 23 1 19 2 5 ... |
correct output |
---|
YES DDRRRRRRULLLLLURRRRRULLLLLLLDD... |
user output |
---|
(empty) |
Test 5
Group: 5
Verdict: WRONG ANSWER
input |
---|
100 16 8 13 1 14 8 41 21 19 11 32 12 46 17 13 7 6 11 8 41 4 32 4 12 ... |
correct output |
---|
NO YES LURULURULURULURULURRDDDDDDDDDR... |
user output |
---|
(empty) |
Test 6
Group: 5
Verdict: WRONG ANSWER
input |
---|
100 31 38 18 35 31 37 35 48 7 13 21 21 46 21 25 2 4 19 35 2 13 2 35 1 ... |
correct output |
---|
YES LLLLLLLLLLLLDRRRRRRRRRRRRDLLLL... |
user output |
---|
(empty) |
Test 7
Group: 2, 5
Verdict: WRONG ANSWER
input |
---|
100 2 4 1 3 1 4 2 4 2 2 1 1 2 4 2 3 1 2 2 4 2 3 1 4 ... |
correct output |
---|
YES LLDRRRU NO NO NO ... |
user output |
---|
YES LLDRRRU NO NO NO ... Truncated |
Test 8
Group: 2, 5
Verdict: WRONG ANSWER
input |
---|
100 2 5 1 2 2 4 2 5 1 2 1 1 2 5 2 1 1 2 2 5 1 1 1 5 ... |
correct output |
---|
YES LDRRURRDL YES RRRDLLLLU NO ... |
user output |
---|
YES LDRRURRDL YES RRRULLLLD NO ... Truncated |
Test 9
Group: 3, 5
Verdict: WRONG ANSWER
input |
---|
100 3 4 1 1 2 3 3 4 2 4 3 2 3 4 2 1 3 1 3 4 1 4 3 4 ... |
correct output |
---|
YES DDRRRUULLDR NO YES URRRDDLULDL ... |
user output |
---|
(empty) |
Test 10
Group: 3, 5
Verdict: WRONG ANSWER
input |
---|
100 3 5 3 4 3 2 3 5 3 5 2 3 3 5 3 1 2 2 3 5 3 1 3 2 ... |
correct output |
---|
NO NO YES UURRRRDDLULDLU NO ... |
user output |
---|
(empty) |
Test 11
Group: 3, 5
Verdict: WRONG ANSWER
input |
---|
100 3 8 2 8 1 2 3 8 2 4 1 7 3 8 3 4 2 7 3 8 2 5 3 1 ... |
correct output |
---|
NO NO NO YES LLLDRRRRURDRUULLLLLLLDD ... |
user output |
---|
(empty) |
Test 12
Group: 3, 5
Verdict: WRONG ANSWER
input |
---|
100 3 9 1 3 2 9 3 9 1 6 1 5 3 9 3 6 2 8 3 9 3 2 3 4 ... |
correct output |
---|
NO NO NO NO NO ... |
user output |
---|
(empty) |
Test 13
Group: 4, 5
Verdict: WRONG ANSWER
input |
---|
100 4 4 2 2 1 4 4 4 4 1 2 2 4 4 2 1 4 3 4 4 3 1 3 3 ... |
correct output |
---|
YES DDLUUURRDDDRUUU YES UUURRRDLDRDLLUU NO ... |
user output |
---|
(empty) |
Test 14
Group: 5
Verdict: WRONG ANSWER
input |
---|
100 12 27 6 22 1 8 6 25 3 2 4 4 6 16 4 6 5 2 36 33 8 6 1 6 ... |
correct output |
---|
YES DLDDDDDRUUUURDDDDRUURDDRRULURU... |
user output |
---|
(empty) |
Test 15
Group: 3, 5
Verdict: WRONG ANSWER
input |
---|
100 3 12 3 5 1 4 3 20 3 19 2 19 3 34 3 9 2 9 3 38 2 15 3 15 ... |
correct output |
---|
YES RRRRRRRUULDLULDLULDLULDLDLULDL... |
user output |
---|
(empty) |
Test 16
Group: 5
Verdict: WRONG ANSWER
input |
---|
100 50 50 29 1 16 21 50 50 37 5 23 48 50 50 32 22 45 24 50 50 6 28 12 37 ... |
correct output |
---|
YES DDDDDDDDDDDDDDDDDDDDDRUUUUUUUU... |
user output |
---|
(empty) |