QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#506218 | #6422. Evil Coordinate | ssmy | WA | 32ms | 3848kb | C++20 | 4.5kb | 2024-08-05 16:01:40 | 2024-08-05 16:01:41 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> PII;
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
int x, y;
map <char, int> mt;
bool is;
void pd(int tx, int ty)
{
if(tx == x && ty == y)
{
is = false;
return ;
}
}
void solve()
{
std:: cin >> x >> y;
string s;
std:: cin >> s;
if(x == 0 && y == 0)
{
std:: cout << "Impossible" << endl;
return ;
}
int m = 0, n = 0;
for(int i = 0; i < s.length(); i ++ )
{
m += dx[mt[s[i]]];
n += dy[mt[s[i]]];
}
if(m == x && n == y)
{
std:: cout << "Impossible" << endl;
return ;
}
map <char, int> l;
for(int i = 0; i < s.length(); i ++ )
{
l[s[i]] ++ ;
}
if(l[s[0]] == s.length())
{
m = 0, n = 0;
for(int i = 0; i < s.length(); i ++ )
{
m += dx[mt[s[i]]];
n += dy[mt[s[i]]];
if(m == x && n == y && l[s[0]] == s.length())
{
std:: cout << "Impossible" << endl;
return ;
}
}
}
is = true;
int tx = 0, ty = 0;
vector <char> ans;
if(x != m && x != 0)
{
for(int i = 0; i < l['L']; i ++ )
{
tx += dx[mt['L']];
ty += dy[mt['L']];
pd(tx, ty);
ans.push_back('L');
}
for(int i = 0; i < l['R']; i ++ )
{
tx += dx[mt['R']];
ty += dy[mt['R']];
pd(tx, ty);
ans.push_back('R');
}
for(int i = 0; i < l['U']; i ++ )
{
tx += dx[mt['U']];
ty += dy[mt['U']];
pd(tx, ty);
ans.push_back('U');
}
for(int i = 0; i < l['D']; i ++ )
{
tx += dx[mt['D']];
ty += dy[mt['D']];
pd(tx, ty);
ans.push_back('D');
}
}
else if(y != n && y != 0)
{
for(int i = 0; i < l['U']; i ++ )
{
tx += dx[mt['U']];
ty += dy[mt['U']];
pd(tx, ty);
ans.push_back('U');
}
for(int i = 0; i < l['D']; i ++ )
{
tx += dx[mt['D']];
ty += dy[mt['D']];
pd(tx, ty);
ans.push_back('D');
}
for(int i = 0; i < l['L']; i ++ )
{
tx += dx[mt['L']];
ty += dy[mt['L']];
pd(tx, ty);
ans.push_back('L');
}
for(int i = 0; i < l['R']; i ++ )
{
tx += dx[mt['R']];
ty += dy[mt['R']];
pd(tx, ty);
ans.push_back('R');
}
}
if(x == 0)
{
if(y >= 0)
{
for(int i = 0; i < l['D']; i ++ )
{
std:: cout << 'D';
}
for(int i = 0; i < l['U']; i ++ )
{
std:: cout << "U";
}
}
else
{
for(int i = 0; i < l['U']; i ++ )
{
std:: cout << "U";
}
for(int i = 0; i < l['D']; i ++ )
{
std:: cout << 'D';
}
}
std:: cout << endl;
return ;
}
if(y == 0)
{
if(x >= 0)
{
for(int i = 0; i < l['L']; i ++ )
{
std:: cout << 'L';
}
for(int j = 0; j < l['R']; j ++ )
{
std:: cout << 'R';
}
}
else
{
for(int j = 0; j < l['R']; j ++ )
{
std:: cout << 'R';
}
for(int i = 0; i < l['L']; i ++ )
{
std:: cout << 'L';
}
}
std:: cout << endl;
return ;
}
if(!is)
{
std:: cout << "Impossible" << endl;
return ;
}
else
{
for(auto p : ans)
{
std:: cout << p;
}
std:: cout << endl;
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
mt['U'] = 0;
mt['L'] = 3;
mt['R'] = 1;
mt['D'] = 2;
int T;
std:: cin >> T;
while(T -- )
solve();
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3496kb
input:
5 1 1 RURULLD 0 5 UUU 0 3 UUU 0 2 UUU 0 0 UUU
output:
LLRRUUD UUU Impossible Impossible Impossible
result:
ok 5 cases
Test #2:
score: -100
Wrong Answer
time: 32ms
memory: 3848kb
input:
11109 6 0 RUDUDR 2 0 URU 0 0 UDRU 0 0 R -1 1 LDUUDDRUUL -1 5 RRUUUDUUU -8 4 RRDRLDR 2 0 UD 0 0 UUDD 3 -2 LDDLLLRR 3 -2 LDRURLDD 1 0 RRL -1 0 DUDDLLRDU -4 0 LL -1 -1 DLRLDLUDUR 1 4 URDULUR 0 0 DDUUDUDDDD 0 2 UU 1 0 RRULD 0 -2 LDLRLLDRRL 0 1 RLRLLRLUR -3 0 RL 0 0 D 0 0 L 0 0 DDLRRUDRUD 0 0 DULU 2 0 RR...
output:
RR R Impossible Impossible Impossible RRUUUUUUD LRRRRDD Impossible LLLLRRDD LLRRUDDD Impossible RLL LL Impossible UUUDLRR Impossible Impossible Impossible DD Impossible RL Impossible Impossible Impossible Impossible Impossible UU LLLUD Impossible L UUDDRR Impossible RRL DDUUUUU LRRRRRUUUD LLRRRD LL...
result:
wrong answer case 1, participant's output is not a permutation of the input