QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#506218#6422. Evil CoordinatessmyWA 32ms3848kbC++204.5kb2024-08-05 16:01:402024-08-05 16:01:41

Judging History

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

  • [2024-08-05 16:01:41]
  • 评测
  • 测评结果:WA
  • 用时:32ms
  • 内存:3848kb
  • [2024-08-05 16:01:40]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> PII;
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
int x, y;
map <char, int> mt;
bool is;
void pd(int tx, int ty)
{
    if(tx == x && ty == y)
    {
        is = false;
        return ;
    }
}
void solve() 
{
    std:: cin >> x >> y;
    string s;
    std:: cin >> s;
    if(x == 0 && y == 0)
    {
        std:: cout << "Impossible" << endl;
        return ;
    }

    int m = 0, n = 0;
    for(int i = 0; i < s.length(); i ++ )
    {   
        m += dx[mt[s[i]]];
        n += dy[mt[s[i]]];
    }

    if(m == x && n == y)
    {
        std:: cout << "Impossible" << endl;
        return ;        
    }

    map <char, int> l;
    for(int i = 0; i < s.length(); i ++ )
    {
        l[s[i]] ++ ;
    }

    if(l[s[0]] == s.length())
    {
        m = 0, n = 0;
        for(int i = 0; i < s.length(); i ++ )
        {
            m += dx[mt[s[i]]];
            n += dy[mt[s[i]]];
            if(m == x && n == y && l[s[0]] == s.length())
            {
                std:: cout << "Impossible" << endl;
                return ;                
            }
        }        
    }
    is = true;
    int tx = 0, ty = 0;
    vector <char> ans;
    if(x != m && x != 0)
    {
        for(int i = 0; i < l['L']; i ++ )
        {
            tx += dx[mt['L']];
            ty += dy[mt['L']];
            pd(tx, ty);
            ans.push_back('L');
        }
        for(int i = 0; i < l['R']; i ++ )
        {
            tx += dx[mt['R']];
            ty += dy[mt['R']];
            pd(tx, ty);
            ans.push_back('R');
        }       
        for(int i = 0; i < l['U']; i ++ )
        {
            tx += dx[mt['U']];
            ty += dy[mt['U']];
            pd(tx, ty);
            ans.push_back('U');
        }           
        for(int i = 0; i < l['D']; i ++ )
        {
            tx += dx[mt['D']];
            ty += dy[mt['D']];
            pd(tx, ty);
            ans.push_back('D');
        }     
    }
    else if(y != n && y != 0)
    {
        for(int i = 0; i < l['U']; i ++ )
        {
            tx += dx[mt['U']];
            ty += dy[mt['U']];
            pd(tx, ty);
            ans.push_back('U');
        }           
        for(int i = 0; i < l['D']; i ++ )
        {
            tx += dx[mt['D']];
            ty += dy[mt['D']];
            pd(tx, ty);
            ans.push_back('D');
        }
        for(int i = 0; i < l['L']; i ++ )
        {
            tx += dx[mt['L']];
            ty += dy[mt['L']];
            pd(tx, ty);
            ans.push_back('L');
        }
        for(int i = 0; i < l['R']; i ++ )
        {
            tx += dx[mt['R']];
            ty += dy[mt['R']];
            pd(tx, ty);
            ans.push_back('R');
        }  
    }

    if(x == 0)
    {
        if(y >= 0)
        {
            for(int i = 0; i < l['D']; i ++ )
            {
                std:: cout << 'D';
            }
            for(int i = 0; i < l['U']; i ++ )
            {
                std:: cout << "U";
            }
        }
        else
        {
            for(int i = 0; i < l['U']; i ++ )
            {
                std:: cout << "U";
            }           
            for(int i = 0; i < l['D']; i ++ )
            {
                std:: cout << 'D';
            }
        }
        std:: cout << endl;
        return ;
    }
    if(y == 0)
    {
        if(x >= 0)
        {
            for(int i = 0; i < l['L']; i ++ )
            {
                std:: cout << 'L';
            }
            for(int j = 0; j < l['R']; j ++ )
            {
                std:: cout << 'R';
            }        
        }
        else
        {
            for(int j = 0; j < l['R']; j ++ )
            {
                std:: cout << 'R';
            }         
            for(int i = 0; i < l['L']; i ++ )
            {
                std:: cout << 'L';
            }
        }
        std:: cout << endl;
        return ;
    }
    if(!is)
    {
        std:: cout << "Impossible" << endl;
        return ;
    }
    else
    {
        for(auto p : ans)
        {
            std:: cout << p;
        }
        std:: cout << endl;
    }
}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
    mt['U'] = 0;
    mt['L'] = 3;
    mt['R'] = 1;
    mt['D'] = 2;
    int T;
    std:: cin >> T;
    while(T -- )
	solve();
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3496kb

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: 32ms
memory: 3848kb

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:

RR
R
Impossible
Impossible
Impossible
RRUUUUUUD
LRRRRDD

Impossible
LLLLRRDD
LLRRUDDD
Impossible
RLL
LL
Impossible
UUUDLRR
Impossible
Impossible
Impossible
DD
Impossible
RL
Impossible
Impossible
Impossible
Impossible
Impossible
UU
LLLUD
Impossible
L
UUDDRR
Impossible
RRL
DDUUUUU
LRRRRRUUUD
LLRRRD
LL...

result:

wrong answer case 1, participant's output is not a permutation of the input