#include #include using namespace std; const int MATRIX_LEN = 30; const int INPUT_LEN = 200; class Matrix { public: char name[2]; int row, col; }; Matrix matrices[MATRIX_LEN]; stack stackMatrices; int main () { int matricesNum; scanf("%d",&matricesNum); Matrix aMatrix; for (int i = 0;i < matricesNum;i ++) { scanf("%s%d%d",aMatrix.name,&aMatrix.row,&aMatrix.col); int pos = aMatrix.name[0] - 'A'; matrices[pos] = aMatrix; } char input[INPUT_LEN]; while (scanf("%s",input) != -1) { while ( ! stackMatrices.empty()) stackMatrices.pop(); int totalMultiCount = 0; int isError = 0; Matrix left, right; for (int i = 0;i < strlen(input);i ++) { if (isalpha(input[i])) { aMatrix = matrices[ input[i] - 'A' ]; stackMatrices.push(aMatrix); continue; } if (input[i] == '(') continue; right = stackMatrices.top(); stackMatrices.pop(); left = stackMatrices.top(); stackMatrices.pop(); if (left.col != right.row) { isError = 1; break; } totalMultiCount += left.row * left.col * right.col; aMatrix.row = left.row; aMatrix.col = right.col; stackMatrices.push(aMatrix); } if (isError) printf("error\n"); else printf("%d\n",totalMultiCount); } return 0; }