fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. typedef vector<int> vi;
  5. typedef pair <int, int> ii;
  6. typedef pair <ll, int> li;
  7. #define mk make_pair
  8.  
  9. const int N = 100;
  10.  
  11. int n, m, q;
  12. int a[N][N];
  13.  
  14. int solve(string s, int l, int r)
  15. {
  16. string cmd = s.substr(l, 3);
  17. if (cmd == "SUM")
  18. {
  19. int b1 = 0, mid = 0;
  20. for (int i = l + 3; i <= r; i++)
  21. {
  22. if (s[i] == '(') b1++;
  23. if (s[i] == ')') b1--;
  24.  
  25. if (b1 == 1 && s[i + 1] == ',')
  26. {
  27. mid = i + 1;
  28. break;
  29. }
  30. }
  31. return solve(s, l + 4, mid - 1) + solve(s, mid + 1, r - 1);
  32. }
  33. else if (cmd == "MAX")
  34. {
  35.  
  36. int b1 = 0, mid = 0;
  37. for (int i = l + 3; i <= r; i++)
  38. {
  39. if (s[i] == '(') b1++;
  40. if (s[i] == ')') b1--;
  41.  
  42. if (b1 == 1 && s[i + 1] == ',')
  43. {
  44. mid = i + 1;
  45. break;
  46. }
  47. }
  48. return max(solve(s, l + 4, mid - 1), solve(s, mid + 1, r - 1));
  49. }
  50. else
  51. {
  52. cmd = s.substr(l, 2);
  53. int i = cmd[0] - 'A' + 1, j = cmd[1] - '0';
  54. return a[j][i];
  55. }
  56. }
  57.  
  58.  
  59.  
  60.  
  61.  
  62. int main()
  63. {
  64. ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  65.  
  66.  
  67. cin >> n >> m;
  68. for (int i = 1; i <= n; i++)
  69. {
  70. for (int j = 1; j <= m; j++)
  71. {
  72. int k; cin >> k;
  73. a[i][j] = k;
  74. }
  75. }
  76.  
  77. cin >> q;
  78.  
  79. while (q--)
  80. {
  81. string s; cin >> s;
  82. int n = s.size();
  83. cout << solve(s, 0, n - 1) << '\n';
  84. }
  85.  
  86.  
  87.  
  88. return 0;
  89. }
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
Standard output is empty