Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.40 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int k, n, a1, a2, a3;
  6.  
  7. vector<char> perem;
  8. vector<int> used;
  9. map<char, int> equals;
  10. string s;
  11.  
  12. void gg() {
  13. used.resize(1);
  14. s = used[0];
  15. gg();
  16. }
  17.  
  18. int parse() {
  19. vector<int> ans;
  20. string next_arg = "";
  21. for (int i = 0; i < s.size(); i++) {
  22. if (s[i] == ' ') {
  23. if (next_arg.size() == 1) {
  24. if (next_arg[0] >= 'a' && next_arg[0] <= 'z') {
  25. ans.push_back(equals[next_arg[0]]);
  26. } else if (next_arg[0] >= '0' && next_arg[0] <= '9') {
  27. ans.push_back(next_arg[0] - '0');
  28. } else {
  29. switch (next_arg[0]) {
  30. case '+' :
  31. a1 = ans.back();
  32. ans.pop_back();
  33. a2 = ans.back();
  34. ans.back() = a1 + a2;
  35. break;
  36. case '-' :
  37. a1 = ans.back();
  38. ans.pop_back();
  39. a2 = ans.back();
  40. ans.back() = a2 - a1;
  41. break;
  42. case '*' :
  43. a1 = ans.back();
  44. ans.pop_back();
  45. a2 = ans.back();
  46. ans.back() = a1 * a2;
  47. break;
  48. case '/' :
  49. a1 = ans.back();
  50. ans.pop_back();
  51. a2 = ans.back();
  52. ans.back() = a2 / a1;
  53. break;
  54. case '<' :
  55. a1 = ans.back();
  56. ans.pop_back();
  57. a2 = ans.back();
  58. if (a2 < a1) {
  59. ans.back() = 1;
  60. } else {
  61. ans.back() = 0;
  62. }
  63. break;
  64. case '=' :
  65. a1 = ans.back();
  66. ans.pop_back();
  67. a2 = ans.back();
  68. if (a1 == a2) {
  69. ans.back() = 1;
  70. } else {
  71. ans.back() = 0;
  72. }
  73. break;
  74. case '>' :
  75. a1 = ans.back();
  76. ans.pop_back();
  77. a2 = ans.back();
  78. if (a2 > a1) {
  79. ans.back() = 1;
  80. } else {
  81. ans.back() = 0;
  82. }
  83. break;
  84. case '?' :
  85. a1 = ans.back();
  86. ans.pop_back();
  87. a2 = ans.back();
  88. ans.pop_back();
  89. a3 = ans.back();
  90. if (a3 == 1) {
  91. ans.back() = a2;
  92. } else {
  93. ans.back() = a1;
  94. }
  95. break;
  96. default:
  97. break;
  98. }
  99. }
  100. } else {
  101. ans.push_back(stoi(next_arg));
  102. }
  103. next_arg = "";
  104. } else {
  105. next_arg += s[i];
  106. }
  107. }
  108. return ans[0];
  109. }
  110.  
  111.  
  112. int main() {
  113. cin >> k;
  114. getline(cin, s);
  115. getline(cin, s);
  116. s += " ";
  117. cin >> n;
  118. used.resize(26);
  119. for (int i = 0; i < s.size(); i++) {
  120. if (s[i] >= 'a' && s[i] <= 'z' && used[s[i] - 'a'] == 0) {
  121. perem.push_back(s[i]);
  122. used[s[i] - 'a'] = 1;
  123. }
  124. }
  125. sort(perem.begin(), perem.end());
  126. for (int i = 0; i < n; i++) {
  127. for (int j = 0; j < k; j++) {
  128. if (perem.size() <= j) {
  129. cin >> a1;
  130. } else {
  131. cin >> equals[perem[j]];
  132. }
  133. }
  134. cout << parse() << endl;
  135. }
  136. return 0;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement