首先需要对字符串进行分割,把每一条指令放进vector;再对每条指令进行检查,不合法直接忽略,合法则进行模拟即可~

#include <bits/stdc++.h>

using namespace std;

void solve() {
    string s;
    cin >> s;
    vector<string> m;
    size_t j = 0, i = 0;
    while (1) {
        i = s.find(";", i + 1);
        //cerr << i << endl;
        if (i == string::npos) {
            m.push_back(s.substr(j, s.size() - j - 1));
            break;
        } else {
            m.push_back(s.substr(j, i - j));
        }
        //cerr << m.back() << endl;
        j = i + 1;
    }
    auto check = [](string& s) {
        if (s.size() <= 1) return false;
        if (s[0] != 'A' && s[0] != 'W' && s[0] != 'S' && s[0] != 'D') return false;
        for (int i = 1; i < s.size(); ++i) {
            if (!isdigit(s[i])) return false;
        }
        return true;
    };
    int x = 0, y = 0;
    for (auto& s : m) {
        if (!check(s)) continue;
        int d = stoi(s.substr(1));
        if (s[0] == 'W') y += d;
        else if (s[0] == 'S') y -= d;
        else if (s[0] == 'A') x -= d;
        else x += d;
    }
    cout << x << "," << y;
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    solve();

    return 0;
}