Advertisement
Nita_Cristian

Masa - mai fain

Feb 20th, 2020
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("masa.in");
  6. ofstream fout("masa.out");
  7.  
  8. map<char, int> m;
  9. string s;
  10.  
  11. int rezolvare()
  12. {
  13.     stack<int> v;
  14.     v.push(0);
  15.  
  16.     for(int i = 0; i < s.length(); i++)
  17.     {
  18.         if(isalpha(s[i]))
  19.         {
  20.             int val_st = v.top();
  21.             v.pop();
  22.  
  23.             int nr = m[s[i]];
  24.  
  25.             if(isdigit(s[i+1]))
  26.             {
  27.                 i++;
  28.                 v.push(val_st + (nr * (s[i]-'0')));
  29.             }
  30.             else
  31.             {
  32.                 v.push(val_st + nr);
  33.             }
  34.         }
  35.         else if(s[i] == '(')
  36.         {
  37.             v.push(0);
  38.         }
  39.         else if(s[i] == ')')
  40.         {
  41.             int top = v.top();
  42.             v.pop();
  43.             int val_st = v.top();
  44.             v.pop();
  45.  
  46.             if(isdigit(s[i+1]))
  47.             {
  48.                 i++;
  49.                 v.push(val_st + (top * (s[i] - '0')));
  50.             }
  51.             else
  52.             {
  53.                 v.push(val_st + top);
  54.             }
  55.         }
  56.     }
  57.     return v.top();
  58. }
  59.  
  60. int main()
  61. {
  62.     getline(fin, s);
  63.     m['C'] = 12;
  64.     m['O'] = 16;
  65.     m['H'] = 1;
  66.  
  67.     int i = 0;
  68.     fout << rezolvare();
  69.  
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement