记录编号 598224 评测结果 AATAAAAAAA
题目名称 表达式树 最终得分 90
用户昵称 GravatarTeaWine 是否通过 未通过
代码语言 C++ 运行时间 2.025 s
提交时间 2025-01-22 17:26:31 内存使用 3.28 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

int p=-114514;

struct er {
    char y;
    
    int l,r;
};

er b[186];
int n,a[186],num;

int yn(char y,int a,int b){
    if(y=='+'){
        return a+b;
    }
    if(y=='-'){
        return a-b;
    }
    if(y=='*'){
        return a*b;
    }
    if(y=='/'){
        return a/b;
    }
}

int main () {
    
    freopen("expr_tree.in","r",stdin);
    freopen("expr_tree.out","w",stdout);
    
    cin>>n;
    for(int i = 1; i<=2*n; i++)a[i]=p;
    for(int i = 1; i<=n; i++){
        cin>>a[i];
    }
    
    for(int i = 1; i<n; i++){
        cin>>b[i].y>>b[i].l>>b[i].r;
    } 
    int tp=n-1,i=1;
    while(tp){
        while(b[i].y=='0')i=(i+1)%(n-1)+1;
        if(a[b[i].l]!=p&&a[b[i].r]!=p) {
            a[n+i]=yn(b[i].y,a[b[i].l],a[b[i].r]);
            tp--;
            b[i].y='0';
            if(tp==0)num=a[n+i];
        }
        i=(i+1)%(n-1)+1;
        
    }
    cout<<num;
    
    return 0;
}