'''
from numpy.core.defchararray import isalpha
A是一个50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵
计算A*B*C有两种顺序:
((AB)C):15000次乘法
10*20*50=10000 列1*列2*行1
20*5*50=5000
总共15000次
(A(BC)):3500次乘法
20*5*10=1000
10*5*50=2500
总共3500次
'''
n=int(input())
d=[]
for i in range(n):
d.append(list(map(int,input().split())))
#print(d)
rule=input() #计算顺序
size=[]
cnt=0
no=0
for i in rule:
if i.isalpha():
size.append(d[no])
no += 1
#print(size)
elif i==')':
a=size.pop() # 遇到)删掉倒数1和倒数2
b=size.pop()
cnt += b[0]*b[1]*a[1]
size.append([b[0],a[1]]) # 将倒2和倒1乘积的size 补充进去
#print(cnt,size)
print(cnt)
栈:后入先出

京公网安备 11010502036488号