QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#613427#6422. Evil CoordinatezyqWA 1ms3580kbC++142.2kb2024-10-05 14:00:502024-10-05 14:03:52

Judging History

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

  • [2024-10-05 14:03:52]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3580kb
  • [2024-10-05 14:00:50]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;



void solve()
{
    int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
    int x,y;cin>>x>>y;
    string s;cin>>s;
    string ans = "";
    int len=s.size();
    map<char,int> mp;
    int edx=0,edy=0;
    map<int, char> p;
    p[0] = 'U', p[1] = 'R', p[2] = 'D', p[3] = 'L';


    for(int i=0;i<s.size();i++) {
        mp[s[i]]++;
        if(s[i]=='R') {
            edx++;
        }
        else if(s[i]=='L') {
            edx--;
        }
        else if(s[i]=='U') {
            edy++;
        }
        else {
            edy--;
        }
    }


    // if(edx==x&&edy==y||x==0&&y==0) {
    //     cout<<"Impossible"<<endl;
    //     return ;
    // } 
    // int sum1=mp['R'],sum2=mp['L'],sum3=mp['U'],sum4=mp['D'];
    // if((sum3-sum4)>=y&&y>=0&&x==0&&sum1==0&&sum2==0) {
    //     cout<<"Impossible"<<endl;
    //     return ;
    // }
    // if((sum1-sum2)>=x&&x>=0&&y==0&&sum3==0&&sum4==0) {
    //     cout<<"Impossible"<<endl;
    //     return ;
    // }
    // if((sum4-sum3)>=abs(y)&&y<=0&&x==0&&sum1==0&&sum2==0) {
    //     cout<<"Impossible"<<endl;
    //     return ;
    // }
    // if((sum2-sum1)>=abs(x)&&x<=0&&y==0&&sum3==0&&sum4==0) {
    //     cout<<"Impossible"<<endl;
    //     return ;
    // }
    int ex=0,ey=0;
    for (int i = 0; i < s.size(); i ++){
        bool f = false;
        for (int j = 0; j < 4; j ++){
            if (!mp[p[j]]) continue;
            int tx = ex + dx[j], ty = ey + dy[j];
            if (tx != x || ty != y){
                f = true;
                ex = tx, ey = ty;
                ans += p[j];
                mp[p[j]] --;
                break;
            }
        }
        if (!f) break;
    }


    if (ans.size() == s.size()) {
        cout << ans << endl;
        return ;
    }

    int o = -1;
    for (int i = 0; i < 4; i ++){
        if (mp[p[i]]){
            o = i;
            break;
        }
    }

    string pp(mp[p[o]], p[o]);
    pp += ans.back();
    ans = pp + ans;
    for (int i = 0; i < ans.size() - 1; i ++){
        cout << ans[i];
    }
    cout << "\n";


}
int main()
{
    int t;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3580kb

input:

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

output:

LLDUURR
UUU
UUU
UUU
UUU

result:

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