1 条题解

  • 0
    @ 2025-2-24 12:51:40
    #include <bits/stdc++.h>
    
    using namespace std;
    int n, m;
    int maxx;
    int a[100001], u[100001], s[100001], ans[100001];
    char tmp;
    
    int main() {
        cin >> n >> m;
        for (int i = 1; i <= n; i++) {
            cin >> a[i];
        }
        for (int i = 1; i <= m; i++) {
            cin >> tmp;
            if (tmp == 'i') {
                cin >> s[i] >> u[i];
            } else {
                cin >> u[i];
            }
        }
        for (int i = m; i > 0; i--) {
    
            if (!s[i]) {
                // 更新一下当前的基准线的最大值
                maxx = max(maxx, u[i]);
            } else if (!ans[s[i]]) {
                // 如果第s[i]个没被更新过,那么更新
                // 他的值,一定是当前基准线的最大值和u[i]中的较大值 (自己思考一下)
                ans[s[i]] = max(maxx, u[i]);
            }
        }
        for (int i = 1; i <= n; i++) {
            if (!ans[i]) {
                //如果第i个没被更新过,那么他一定是当前基准线的最大值和a[i]中的较大值
                ans[i] = max(a[i], maxx);
            }
            cout << ans[i] << endl;
        }
       
        return 0;
    }
    
    

    信息

    ID
    2047
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    27
    已通过
    8
    上传者