#include<bits/stdc++.h>
using namespace std;
struct Matrix{
int l,r;
Matrix(int l=0,int r=0):l(l),r(r){}
}m1,m2,m[26];
stack<Matrix>s;
int n,i,t1,t2,ans,error;
char c;
string str;
int main(){
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("\n%c %d%d",&c,&t1,&t2);
c-='A';
m[c].l=t1;
m[c].r=t2;
}
while(cin>>str){
ans=0;
error=0;
for(i=0;i<str.length();i++){
if(str[i]>='A'&&str[i]<='Z')s.push(m[str[i]-'A']);
else if(str[i]==')'){
m2=s.top();
s.pop();
m1=s.top();
s.pop();
if(m1.r!=m2.l){
error=1;
break;
}
ans+=m1.l*m1.r*m2.r;
s.push(Matrix(m1.l,m2.r));
}
}
if(error)puts("error");
else printf("%d\n",ans);
}
return 0;
}
UVA 442 Matrix Chain Multiplication
最新推荐文章于 2022-12-31 19:39:21 发布