QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#506240#6422. Evil CoordinatechanalWA 0ms3476kbC++144.3kb2024-08-05 16:12:352024-08-05 16:12:36

Judging History

你现在查看的是最新测评结果

  • [2024-08-05 16:12:36]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3476kb
  • [2024-08-05 16:12:35]
  • 提交

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 5 UUU
//endx=0 endy=5

	if(my==0) { //地雷在x轴上
		//最后落在x轴上,在这种情况下必然不会出现mx=0,那么就应该讨论mx和endx的关系以及end_y之间的关系
		if(mp['U']==0&&mp['D']==0) { //如果都等于0这种情况说明只能左右移动那么只需要反方向移动即可
			if(mx>0&&end_x>mx) {
				cout<<"Impossible"<<endl;
				return;
			} else if(mx<0&&end_x<mx) {
				cout<<"Impossible"<<endl;
				return;
			} else {
				if(mx>0) {
					for(int i=0; i<mp['L']; i++) {
						cout<<'L';
					}
					for(int i=0; i<mp['R']; i++) {
						cout<<'R';
					}
					cout<<endl;
					return;
				}else{
					for(int i=0; i<mp['R']; i++) {
						cout<<'R';
					}
					for(int i=0; i<mp['L']; i++) {
						cout<<'L';
					}
					cout<<endl;
					return;
					
				}
			}
		} else if((mp['U']!=0)&&end_x!=mx) {
			for(int i=0; i<mp['U']; i++) {
				cout<<'U';
			}
			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';
			}
			cout<<endl;
			return;
		} else if(mp['D']!=0&&end_x!=mx) {
			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';
			}
			for(int i=0; i<mp['U']; i++) {
				cout<<'U';
			}
			cout<<endl;
			return;
		} else {
			cout<<"Impossible"<<endl;
			return;
		}


	} else if(mx==0) { //如果地雷在y轴上
		if(mp['L']==0&&mp['R']==0) { //如果都等于0这种情况说明只能左右移动那么只需要反方向移动即可
			if(my>0&&end_y>my) {
				cout<<"Impossible"<<endl;
				return;
			} else if(my<0&&end_y<my) {
				cout<<"Impossible"<<endl;
				return;
			} else {
				if(my>0){
					for(int i=0; i<mp['L']; i++) {
						cout<<'D';
					}
					for(int i=0; i<mp['R']; i++) {
						cout<<'U';
					}
					cout<<endl;
					return;	
				}else{
					
					for(int i=0; i<mp['L']; i++) {
						cout<<'U';
					}
					for(int i=0; i<mp['R']; i++) {
						cout<<'D';
					}
					cout<<endl;
					return;
				}
			}
		} else if((mp['L']!=0)&&end_x!=mx) {
			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';
			}
			for(int i=0; i<mp['R']; i++) {
				cout<<'R';
			}
			cout<<endl;
			return;
		} else if(mp['R']!=0&&end_x!=mx) {
			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';
			}
			for(int i=0; i<mp['L']; i++) {
				cout<<'L';
			}
			cout<<endl;
			return;
		} else {
			cout<<"Impossible"<<endl;
			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();
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3476kb

input:

5
1 1
RURULLD
0 5
UUU
0 3
UUU
0 2
UUU
0 0
UUU

output:

LLRRUUD

Impossible
Impossible
Impossible

result:

wrong answer Line "" doesn't correspond to pattern "[UDLR]{1,100000}|Impossible"