QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#506150#6422. Evil CoordinatechanalWA 0ms3584kbC++143.6kb2024-08-05 15:43:142024-08-05 15:43:14

Judging History

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

  • [2024-08-05 15:43:14]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3584kb
  • [2024-08-05 15:43:14]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
const int MAXSIZE=200005;
long long even[MAXSIZE],odd[MAXSIZE];
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;
	}


	int posx=0,posy=0;

	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;
	} else 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;
		}
	}


}
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: 3584kb

input:

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

output:

LLRRUUD
UUU
Impossible
UUU
Impossible

result:

wrong answer case 4, participant's output goes through forbidden coordinate