結果

問題 No.3021 Maximize eval
ユーザー Today03
提出日時 2025-02-15 00:08:00
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,579 bytes
コンパイル時間 4,250 ms
コンパイル使用メモリ 279,636 KB
実行使用メモリ 21,716 KB
最終ジャッジ日時 2025-02-15 00:08:07
合計ジャッジ時間 5,043 ms
ジャッジサーバーID
(参考情報)
judge7 / judge6
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 1 WA * 14
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int INF = 1e9 + 10;
const ll INFL = 4e18;

int main() {
    int T;
    cin >> T;

    while (T--) {
        string S;
        cin >> S;

        auto type = [&](char c) {
            if (c == '?') return 0;
            if (c == '+' || c == '-') return 1;
            return 2;
        };

        vector<string> term;
        for (char c : S) {
            string s;
            s.push_back(c);
            if (term.empty()) {
                term.push_back(s);
            } else if (type(c) == type(term.back().back())) {
                term.back().push_back(c);
            } else {
                term.push_back(s);
            }
        }

        bool plus = true;
        string ans;
        for (int i = 0; i < ssize(term); i++) {
            if (term[i] == "+") {
                plus = true;
            } else if (term[i] == "-") {
                plus = false;
            } else if (term[i].front() == '?') {
                if (i > 0 && term[i - 1] == "-" && ssize(term[i]) >= 3) {
                    term[i][0] = '1';
                    term[i][1] = '+';
                    for (int j = 2; j < ssize(term[i]); j++) term[i][j] = '9';
                    plus = true;
                } else if (plus) {
                    for (int j = 0; j < ssize(term[i]); j++) term[i][j] = '9';
                } else {
                    for (int j = 0; j < ssize(term[i]); j++) term[i][j] = '1';
                }
            }

            cout << term[i];
        }
        cout << '\n';
    }
}
0