提交记录 21446


用户 题目 状态 得分 用时 内存 语言 代码长度
meliodas_mc test. 自定义测试 Accepted 100 36.85 us 36 KB C++ 2.19 KB
提交时间 评测时间
2024-03-24 21:59:04 2024-03-24 21:59:05
//https://onlinejudge.org/external/118/11890.pdf
//11890

#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<stack>

using namespace std;

int arr[100002], arr2[100002];

bool comp(int a, int b){
    return a > b;
}

int main(){

    int cases, size, i, j, l, index, h, pre, ans, sinal, index2;
    string cad;

    scanf("%i", &cases);

    while(cases--){

        cin.ignore();
        getline(cin, cad);
        scanf("%i", &size);

        for(i = 0; i<size; i++){
            scanf("%i", &arr[i]);
            arr2[i] = 1;
        }

        sort(arr, arr+size, comp);
        
        ans = 0;
        pre = 0;
        l = 0;
        h = size-1;
        index = size;
        stack<int>p;

        for(i = cad.size()-1; i>-1; i--){

            if(cad[i] == 'x'){
                index--;
            }   

            else if((cad[i] == '+' || cad[i] == '-')){
                
                sinal = -1;

                if(cad[i] == '+'){
                    sinal = 1;
                }

                if(cad[i+1] == '(' && cad[i+3] != ')'){
                    p.push('(');
                    j = i+2;
                    index2 = index;
                    while(!p.empty()){
                        if(cad[j] == '('){
                            p.push('(');
                        }
                        
                        else if(cad[j] == ')'){
                            p.pop();
                        }

                        else if(cad[j] == 'x'){
                            //cout<<j<<" "<<index2<<endl;
                            arr2[index2++]*=sinal;
                        }

                        j+=1;
                    }
                }

                else{
                    //cout<<i<<" "<<index<<endl;
                    arr2[index] = sinal;
                }
            }
        }

        for(i = 0; i<size; i++){
            //cout<<arr[i]<<" ";
            if(arr2[i] < 0){
                //cout<<"- "<<arr[h]<<" ";
                ans+=(arr[h--]*-1);
            }

            else{
                //cout<<"+ "<<arr[l]<<" ";
                ans+=(arr[l++]);
            }
        }
        printf("%i\n", ans);
    } 

    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #136.85 us36 KBAcceptedScore: 100


Judge Duck Online | 评测鸭在线
Server Time: 2025-07-19 04:38:41 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠