QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#507058 | #6422. Evil Coordinate | Umok | WA | 12ms | 3756kb | C++20 | 3.0kb | 2024-08-06 09:40:32 | 2024-08-06 09:40:34 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define endl '\n'
const int N = 2e5 + 5;
#define int long long
typedef pair<int, int> PII;
#define MAX LONG_LONG_MAX
#define mod 10007
#define eps 1e-7
int l, r, d, u, a, b;
void solve()
{
l = d = r = u = 0;
string s, ans;
cin >> a >> b;
cin >> s;
for (char c : s)
{
if (c == 'L')
l++;
else if (c == 'R')
r++;
else if (c == 'U')
u++;
else
d++;
}
int x = r - l, y = u - d;
if (x == a && y == b || a == 0 && b == 0)
{
cout << "Impossible" << endl;
return;
}
if (u == 0 && d == 0 && b == 0)
{
if ((x >= a && a > 0) || (x <= a && a < 0))
{
cout << "Impossible" << endl;
return;
}
}
else if (l == 0 && r == 0 && a == 0)
{
if ((y >= b && b > 0) || (y <= b && b < 0))
{
cout << "Impossible" << endl;
return;
}
}
/////////**************************** */
if (b == 0)
{
if (u)
for (; u; u--)
ans += "U";
else if (d)
for (; d; d--)
ans += "D";
}
for (int i = 1; u && i < b; i++, u--)
ans += "U";
for (int i = 1; d && -i > b; i++, d--)
ans += "D";
if (a == 0)
{
if (l)
for (; l; l--)
ans += "L";
else if (r)
for (; r; r--)
ans += "R";
}
else if (a > 0)
{
for (; l; l--)
ans += "L";
}
else
for (; r; r--)
ans + "R";
// int mins = min(u, d);
// if (b > 0)
// for (int i = 1; i <= mins; i++)
// ans += "DU";
// else if (b < 0)
// for (int i = 1; i <= mins; i++)
// ans += "UD";
// u -= mins, d -= mins;
// mins = min(l, r);
// if (a > 0)
// for (int i = 1; i <= mins; i++)
// ans += "LR";
// else if (a < 0)
// for (int i = 1; i <= mins; i++)
// ans += "RL";
// l -= mins, r -= mins;
if (ans[0] == 'U')
for (int i = 1; i <= u; i++)
ans += "U";
else if (ans[0] == 'D')
for (int i = 1; i <= d; i++)
ans += "D";
if (ans.find('R') != -1)
for (int i = 1; i <= r; i++)
ans += "R";
else if (ans.find('L') != -1)
for (int i = 1; i <= l; i++)
ans += "L";
for (int i = 1; i <= r; i++)
ans += "R";
for (int i = 1; i <= d; i++)
ans += "D";
for (int i = 1; i <= u; i++)
ans += "U";
for (int i = 1; i <= l; i++)
ans += "L";
cout << ans << endl;
}
signed main()
{
IOS;
int t;
cin >> t;
while (t--)
solve();
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3532kb
input:
5 1 1 RURULLD 0 5 UUU 0 3 UUU 0 2 UUU 0 0 UUU
output:
LLRRDUU UUU Impossible Impossible Impossible
result:
ok 5 cases
Test #2:
score: -100
Wrong Answer
time: 12ms
memory: 3756kb
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:
UURRDD UUR Impossible Impossible Impossible UUUUUUDUU DDL UD Impossible DLLLLDRRD DLLDDRRDDU Impossible UUDDDDLL LL Impossible UUULRRD Impossible Impossible Impossible DLLLLLDRRRD Impossible L Impossible Impossible Impossible Impossible Impossible ULLLURRRRRU DULLL Impossible UUUDDDL DDRRUU Impossib...
result:
wrong answer case 6, participant's output is not a permutation of the input