玄关 TLE 求救 c⌒っ゚Д゚)っ
查看原帖
玄关 TLE 求救 c⌒っ゚Д゚)っ
1161278
happy_lion楼主2024/10/23 18:53
#include<bits/stdc++.h>
using namespace std;
int x;
string san(string s) {
    int num = 0;
    int ii = 0;
    for (int i=2;s[i] >= '0' && s[i] <= '9';i++) {
        num = num * 10 + (s[i]-'0');
        ii = i;
    }
    bool jie;
    if (s[1] == '>') {
        jie = (x>num);
    } else {
        jie = (x<num);
    }
    string num1 = "",num2 = "";
    for (int i=ii+2;s[i] >= '0' && s[i] <= '9';i++) {
        num1 = num1 + s[i];
        ii = i;
    }
    for (int i=ii+2;s[i] >= '0' && s[i] <= '9';i++) {
        num2 = num2 + s[i];
        ii = i;
    }
    if (jie) {
        return num1;
    } else {
        return num2;
    }
}
string suan(string s) {
    stack<string> l;
    string pin = "";
    for (int i=0;i<s.size();i++) {
        if (s[i] == '?') {
            l.push(pin+"?");
            pin = "";
        } else if (s[i] == ':') {
            string u = l.top();
            l.pop();
            if (u[u.size()-1] == ':') {
                u = u + pin;
                u = san(u);
                while (l.size() && l.top()[l.top().size()-1] == ':') {
                    string o = l.top();
                    o = o + u;
                    u = san(o);
                    l.pop();
                }
                if (l.size()) {
                    string o = l.top();
                    l.pop();
                    o = o + u + ':';
                    l.push(o);
                } else {
                    l.push(u);
                }
            } else {
                u = u + pin + ":";
                l.push(u);
            }
            pin = "";
        } else {
            pin = pin + s[i];
        }
        // if (l.size()) {
        //     cout << l.top() << " ";
        // }
    }
    if (!l.size()) {
        return pin;
    }
    string u = l.top();
    l.pop();
    u = u + pin;
    u = san(u);
    while (l.size() && l.top()[l.top().size()-1] == ':') {
        string o = l.top();
        o = o + u;
        u = san(o);
        l.pop();
    }
    if (l.size()) {
        string o = l.top();
        l.pop();
        o = o + u + ':';
        l.push(o);
    } else {
        l.push(u);
    }
    // cout << endl << l.size() << " " << l.top() << endl;
    return l.top();
}
int main() {
    int m,t;
    cin >> m >> t;
    string shi;
    cin >> shi;
    for (int i=1;i<=t;i++) {
        cin >> x;
        cout << suan(shi) << endl;
    }
}
2024/10/23 18:53
加载中...