Advertisement
Guest User

c.cpp

a guest
Jun 26th, 2015
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. #define __GLIBCXX_DEBUG
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. #define rep(i, n) for(int i = 0; i < (int)(n); ++i)
  6. #define pb push_back
  7. #define ALL(a) begin(a), end(a)
  8. #define mp make_pair
  9. #define F first
  10. #define S second
  11. #define SZ(a) ((int)(a.size()))
  12. typedef long long ll;
  13. typedef pair<int, int> PI;
  14.  
  15. vector<string> ap;
  16. int n;
  17.  
  18. int pos = 0;
  19.  
  20. ll rec(int dep){
  21.   if(isdigit(ap[pos][dep])){
  22.     int tcp  = pos;
  23.     ++pos;
  24.     return ap[tcp][dep] - '0';
  25.   }
  26.  
  27.   char op = ap[pos][dep];
  28.   ++pos;
  29.   ++dep;
  30.   ll ret = rec(dep);
  31.   while(pos < SZ(ap) && dep < SZ(ap[pos])){
  32.     int p = rec(dep);
  33.     if(op == '+') ret += p;
  34.     else ret *= p;
  35.   }
  36.   return ret;
  37. }
  38.  
  39. void solve(){
  40.   ap.resize(n);
  41.   rep(i, n) cin >> ap[i];
  42.   pos = 0;
  43.   cout << rec(0) << endl;
  44. }
  45.  
  46. int main(int argc, char *argv[])
  47. {
  48.  
  49.   while(cin >> n && n) solve();
  50.  
  51.   return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement