QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#506340 | #6422. Evil Coordinate | Foedere0 | WA | 12ms | 3672kb | C++23 | 3.6kb | 2024-08-05 16:49:47 | 2024-08-05 16:49:48 |
Judging History
answer
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
#include<vector>
#include<stack>
#define int long long
//#define endl '\n'
using namespace std;
typedef pair<int,int> PII;
const int N=200200;
int n;
int x,y;
string s;
int o=0,p=0;
map<char,int> m;
void solve(){
m.clear();
o=0,p=0;
cin>>x>>y>>s;
string ans;
ans.clear();
if(x==0&&y==0){
cout<<"Impossible"<<endl;
return;
}
for(int i=0;i<s.size();i++){
if(s[i]=='L') o--;
if(s[i]=='R') o++;
if(s[i]=='U') p++;
if(s[i]=='D') p--;
m[s[i]]++;
}
if(o==x&&p==y){
cout<<"Impossible"<<endl;
return;
}
if(x!=0&&y!=0){
if(x!=o){
while(m['L']){
ans+='L';
m['L']--;
}
while(m['R']){
ans+='R';
m['R']--;
}
while(m['U']) ans+='U',m['U']--;
while(m['D']) ans+='D',m['D']--;
}
else{
while(m['D']){
ans+='D';
m['D']--;
}
while(m['U']){
ans+='U';
m['U']--;
}
while(m['L']) ans+='L',m['L']--;
while(m['R']) ans+='R',m['R']--;
}
cout<<ans<<endl;
return;
}
if(x==0){
int yy=0;
bool st=0;
if(o!=0){
while(m['L']){
ans+='L';
m['L']--;
}
while(m['R']) ans+='R', m['R']--;
while(m['U']) ans+='U', m['U']--;
while(m['D']) ans+='D', m['D']--;
}
else{
if(m['L']) ans+='L',m['L']--;
else if(m['R']) ans+='R',m['R']--;
else if(!m['L']&&!m['R']) st=1;
if(y>=0){
yy=0;
while(m['D']){
ans+='D';
m['D']--;
yy--;
}
while(m['U']){
ans+='U';
yy++;
if(yy==y&&st==1){
cout<<"Impossible"<<endl;
return;
}
m['U']--;
}
}
else{
yy=0;
while(m['U']){
ans+='U';
m['U']--;
yy++;
}
while(m['D']){
ans+='D';
yy--;
if(yy==y&&st==1){
cout<<"Impossible"<<endl;
return;
}
m['D']--;
}
}
while(m['L']) ans+='L', m['L']--;
while(m['R']) ans+='R', m['R']--;
while(m['U']) ans+='U', m['U']--;
while(m['D']) ans+='D', m['D']--;
}
}
else if(y==0){
int xx=0;
bool st=0;
if(p!=0){
while(m['U']){
ans+='U';
m['U']--;
}
while(m['D']) ans+='D', m['D']--;
while(m['L']) ans+='L', m['L']--;
while(m['R']) ans+='R', m['R']--;
}
else{
if(m['U']) ans+='U',m['U']--;
else if(m['D']) ans+='D',m['D']--;
else if(!m['U']&&!m['D']) st=1;
if(x>=0){
while(m['L']){
ans+='L';
xx--;
m['L']--;
}
while(m['L']){
ans+='L';
xx--;
if(xx==x&&st){
cout<<"Impossible"<<endl;
return;
}
m['L']--;
}
}
else{
while(m['R']){
ans+='R';
xx++;
m['R']--;
}
while(m['R']){
ans+='R';
xx++;
if(xx==x&&st){
cout<<"Impossible"<<endl;
return;
}
m['R']--;
}
}
while(m['U']) ans+='U', m['U']--;
while(m['D']) ans+='D', m['D']--;
}
}
cout<<ans<<endl;
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int T=1;
cin>>T;
while(T--){
solve();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3612kb
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: 12ms
memory: 3672kb
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:
UUDD UUR Impossible Impossible Impossible RRUUUUUUD LRRRRDD UD Impossible LLLLRRDD LLRRUDDD Impossible UUDDDDLLR Impossible DUUULRR Impossible Impossible Impossible LLLLLRRRDD Impossible R Impossible Impossible Impossible Impossible Impossible LLLRRRRRUU LLLUD Impossible UUUDDD DDUURR Impossible UR...
result:
wrong answer case 1, participant's output is not a permutation of the input