QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#506164 | #6422. Evil Coordinate | chanal | WA | 0ms | 3516kb | C++14 | 3.5kb | 2024-08-05 15:46:23 | 2024-08-05 15:46:24 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
void solve() {
int mx,my;
cin>>mx>>my;
string str;
cin>>str;
map<char,int> mp;
for(int i=0; i<(int)str.size(); i++) {
mp[str[i]]++;//统计各个方向移动的指令数目
}
int end_x=mp['R']-mp['L'];//不要取绝对值就是算最后的坐标
int end_y=mp['U']-mp['D'];
if((mx==0&&my==0)||(end_x==mx&&end_y==my)) {
cout<<"Impossible"<<endl;
return;
}
//0 2 uuu
//endx=0,endy=3
int posx=0,posy=0;
if(my==0) { //地雷在x轴上
if(end_y==0) { //最后落在x轴上
if(mx>0) { //如果
if(end_x>mx) {
cout<<"Impossible"<<endl;
return;
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}return;
} else {
if(end_x<mx) {
cout<<"Impossible"<<endl;
return;
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}return;
}
} else {
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}return;
}
} else if(mx==0) { //如果地雷在y轴上
if(end_x==0) { //最后落在y轴上
if(my>0) { //如果
if(end_y>my) {
cout<<"Impossible"<<endl;
return;
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
return;
} else {
if(end_y<my) {
cout<<"Impossible"<<endl;
return;
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
return;
}
} else {
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
return;
}
}else if(end_x!=mx&&end_y!=my) { //如果两个最终的结果都不跟坐标相同
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
cout<<endl;
return;
} else if(end_x!=mx&&end_y==my) {//若x不相同,但是y的坐标相同的话__地雷的点不在坐标轴上,但是在
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
cout<<endl;
return;
} else if(end_y!=my&&end_x==mx) { //如果y最后不相同但是x相同,
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
cout<<endl;
return;
}
}
int main() {
int t;
cin>>t;
while(t--) {
solve();
}
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3516kb
input:
5 1 1 RURULLD 0 5 UUU 0 3 UUU 0 2 UUU 0 0 UUU
output:
LLRRUUD UUUImpossible Impossible Impossible
result:
wrong answer Line "UUUImpossible" doesn't correspond to pattern "[UDLR]{1,100000}|Impossible"