QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#686492#9521. Giving Directions in HarbinbhscerAC ✓12ms5892kbC++172.8kb2024-10-29 13:49:342024-10-29 13:49:34

Judging History

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

  • [2024-10-29 13:49:34]
  • 评测
  • 测评结果:AC
  • 用时:12ms
  • 内存:5892kb
  • [2024-10-29 13:49:34]
  • 提交

answer

#include <bits/stdc++.h>

#define int long long
#define fadd(a,b,c) for (int a=b;a<=c;a++)
#define fsub(a,b,c) for (int a=b;a>=c;a--)
#define F first
#define S second
#define CYes cout << "Yes\n"
#define CNo cout << "No\n"
#define CYES cout << "YES\n"
#define CNO cout << "NO\n"
#define println(a) cout << (a) << '\n'

using namespace std;

typedef long long LL;
typedef pair<int,int> PII;
void fastIO(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);}
class bhscer {
public:
    template<typename FIRST, typename ...PACK> static void debug(FIRST first, PACK... params) { std::cout<< first <<' '; debug(params...);}
    template<typename T> static void debug(T end) { std::cout << end << std::endl; }
};
const int N = 5e5;
int a[N];
char d[N];
int x[N];

void solve() {
    string ans;
    int n; cin >> n;
    char initPos = '\0';
    for (int i = 1; i <= n; i++) {
        cin >> d[i] >> x[i];

        if (i == 1) {
            initPos = d[i];
        } else {
            if (d[i] == d[i-1]) {
                ;
            } else if (d[i-1] == 'N') {
                if (d[i] == 'S') {
                    ;
                } else if (d[i] == 'W') {
                    ans += 'L';
                } else if (d[i] == 'E') {
                    ans += 'R';
                }
            } else if (d[i-1] == 'S') {
                if (d[i] == 'N') {
                    ;
                } else if (d[i] == 'W') {
                    ans += 'R';
                }
                else if (d[i] == 'E') {
                    ans += 'L';
                }
            } else if (d[i-1] == 'W') {
                if (d[i] == 'N') {
                    ans += 'R';
                } else if (d[i] == 'S') {
                    ans += 'L';
                } else if (d[i] == 'E') {
                    ;
                }
            } else if (d[i-1] == 'E') {
                if (d[i] == 'N') {
                    ans += 'L';
                } else if (d[i] == 'S') {
                    ans += 'R';
                } else if (d[i] == 'W') {
                    ;
                }
            }
        }
        ans += string(x[i], 'Z');
    }

    vector<string> final;
    for (int i = 0; i < ans.size(); i++) {
        if (ans[i] == 'Z') {
            int j = i;
            while (j< ans.size() && ans[j] == 'Z') {
                j++;
            }
            final.push_back("Z " + to_string(j-i));
            i = j-1;
        } else {
            final.push_back(string(1, ans[i]));
        }
    }

    cout << final.size() << ' ' << initPos << '\n';
    for (auto x: final) cout << x << '\n';
}
signed main() {
    fastIO();
    int _ = 1; cin >> _;
    while (_--) {
        solve();
    }

    return 0;
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5852kb

input:

1
2
S 2
E 1

output:

3 S
Z 2
L
Z 1

result:

ok ok (1 test case)

Test #2:

score: 0
Accepted
time: 1ms
memory: 5892kb

input:

99
4
E 6
N 1
W 2
S 8
8
W 10
N 1
E 10
S 2
E 2
N 2
W 2
S 1
9
N 5
E 4
N 7
E 6
S 9
E 8
N 4
W 6
N 7
6
N 6
E 6
N 8
W 9
S 7
E 2
8
E 6
S 9
W 5
S 4
W 6
N 4
E 5
N 9
8
N 6
W 10
N 6
W 6
S 6
E 6
S 6
E 10
10
N 7
W 3
N 5
W 5
S 8
W 10
N 6
E 9
N 8
E 8
8
W 9
N 10
E 6
S 10
E 9
S 10
W 6
N 10
4
W 5
N 1
E 5
S 1
4
W 4
S 8...

output:

7 E
Z 6
L
Z 1
L
Z 2
L
Z 8
15 W
Z 10
R
Z 1
R
Z 10
R
Z 2
L
Z 2
L
Z 2
L
Z 2
L
Z 1
17 N
Z 5
R
Z 4
L
Z 7
R
Z 6
R
Z 9
L
Z 8
L
Z 4
L
Z 6
R
Z 7
11 N
Z 6
R
Z 6
L
Z 8
L
Z 9
L
Z 7
L
Z 2
15 E
Z 6
R
Z 9
R
Z 5
L
Z 4
R
Z 6
R
Z 4
R
Z 5
L
Z 9
15 N
Z 6
L
Z 10
R
Z 6
L
Z 6
L
Z 6
L
Z 6
R
Z 6
L
Z 10
19 N
Z 7
L
Z 3
R
Z 5
...

result:

ok ok (99 test cases)

Test #3:

score: 0
Accepted
time: 12ms
memory: 5548kb

input:

10000
1
W 9
1
N 3
10
W 10
N 7
W 5
S 9
W 9
S 8
E 9
S 6
E 5
S 5
2
E 8
S 10
2
N 7
W 5
5
S 4
W 3
S 7
E 4
N 7
8
N 7
E 8
N 3
E 9
S 5
W 5
S 9
W 10
9
W 9
S 6
E 6
N 8
W 5
N 6
W 3
N 8
W 7
3
S 9
W 2
N 10
5
N 6
E 4
N 6
E 10
N 1
10
S 7
W 4
N 3
E 5
S 7
W 8
N 2
E 8
N 4
W 8
8
S 9
W 1
N 4
E 6
N 1
W 8
N 6
W 6
4
W 10
...

output:

1 W
Z 9
1 N
Z 3
19 W
Z 10
R
Z 7
L
Z 5
L
Z 9
R
Z 9
L
Z 8
L
Z 9
R
Z 6
L
Z 5
R
Z 5
3 E
Z 8
R
Z 10
3 N
Z 7
L
Z 5
9 S
Z 4
R
Z 3
L
Z 7
L
Z 4
L
Z 7
15 N
Z 7
R
Z 8
L
Z 3
R
Z 9
R
Z 5
R
Z 5
L
Z 9
R
Z 10
17 W
Z 9
L
Z 6
L
Z 6
L
Z 8
L
Z 5
R
Z 6
L
Z 3
R
Z 8
L
Z 7
5 S
Z 9
R
Z 2
R
Z 10
9 N
Z 6
R
Z 4
L
Z 6
R
Z 10
L
...

result:

ok ok (10000 test cases)

Extra Test:

score: 0
Extra Test Passed