Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cstring>
- #include <string>
- #include <cctype>
- #include <stack>
- #include <queue>
- #include <list>
- #include <vector>
- #include <map>
- #include <set>
- #include <sstream>
- #include <stdlib.h>
- #include <cmath>
- #define LL unsigned long long
- using namespace std;
- typedef struct m{
- char car;
- int r;
- int c;
- }Tmat;
- Tmat arr[27];
- int main() {
- int ro,col,index,aux,n,result;
- char c;Tmat au;
- string cad;
- stack<Tmat> s;
- bool fallo;
- Tmat s1,s2;
- scanf("%d",&n);
- int cont=0;getchar();
- for (int i=0;i<n;i++){
- scanf("%c %d %d",&c,&ro,&col);
- arr[i].car=c;arr[i].r=ro;arr[i].c=col;
- getchar();
- }
- fallo=false;
- while(cin>>cad){
- result=0;index=0;fallo=false;
- n=cad.length();
- if(n==1){printf("0\n");}
- else{
- while(index<=n-1 && !fallo){
- if(isalpha(cad[index])){
- cont=0;
- /*busco el correspondiente car*/
- while(arr[cont].car!=cad[index]){
- cont++;
- }
- au=arr[cont];
- s.push(au);
- index++;
- }else if(cad[index]==')'){
- s1=s.top();s.pop();s2=s.top();s.pop();
- if(s1.r!=s2.c){fallo=true;continue;}
- else{
- result+=(s1.c*s1.r*s2.r);
- aux=s1.c;
- s1.r=s2.r; s1.c=aux;
- s.push(s1);
- index++;
- }
- }else{
- index++;
- }
- }
- if(!fallo){
- printf("%d\n",result);
- }else printf("error\n");
- }
- getchar();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement