Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int k, n, a1, a2, a3;
- vector<char> perem;
- vector<int> used;
- map<char, int> equals;
- string s;
- void gg() {
- used.resize(1);
- s = used[0];
- gg();
- }
- int parse() {
- vector<int> ans;
- string next_arg = "";
- for (int i = 0; i < s.size(); i++) {
- if (s[i] == ' ') {
- if (next_arg.size() == 1) {
- if (next_arg[0] >= 'a' && next_arg[0] <= 'z') {
- ans.push_back(equals[next_arg[0]]);
- } else if (next_arg[0] >= '0' && next_arg[0] <= '9') {
- ans.push_back(next_arg[0] - '0');
- } else {
- switch (next_arg[0]) {
- case '+' :
- a1 = ans.back();
- ans.pop_back();
- a2 = ans.back();
- ans.back() = a1 + a2;
- break;
- case '-' :
- a1 = ans.back();
- ans.pop_back();
- a2 = ans.back();
- ans.back() = a2 - a1;
- break;
- case '*' :
- a1 = ans.back();
- ans.pop_back();
- a2 = ans.back();
- ans.back() = a1 * a2;
- break;
- case '/' :
- a1 = ans.back();
- ans.pop_back();
- a2 = ans.back();
- ans.back() = a2 / a1;
- break;
- case '<' :
- a1 = ans.back();
- ans.pop_back();
- a2 = ans.back();
- if (a2 < a1) {
- ans.back() = 1;
- } else {
- ans.back() = 0;
- }
- break;
- case '=' :
- a1 = ans.back();
- ans.pop_back();
- a2 = ans.back();
- if (a1 == a2) {
- ans.back() = 1;
- } else {
- ans.back() = 0;
- }
- break;
- case '>' :
- a1 = ans.back();
- ans.pop_back();
- a2 = ans.back();
- if (a2 > a1) {
- ans.back() = 1;
- } else {
- ans.back() = 0;
- }
- break;
- case '?' :
- a1 = ans.back();
- ans.pop_back();
- a2 = ans.back();
- ans.pop_back();
- a3 = ans.back();
- if (a3 == 1) {
- ans.back() = a2;
- } else {
- ans.back() = a1;
- }
- break;
- default:
- break;
- }
- }
- } else {
- ans.push_back(stoi(next_arg));
- }
- next_arg = "";
- } else {
- next_arg += s[i];
- }
- }
- return ans[0];
- }
- int main() {
- cin >> k;
- getline(cin, s);
- getline(cin, s);
- s += " ";
- cin >> n;
- used.resize(26);
- for (int i = 0; i < s.size(); i++) {
- if (s[i] >= 'a' && s[i] <= 'z' && used[s[i] - 'a'] == 0) {
- perem.push_back(s[i]);
- used[s[i] - 'a'] = 1;
- }
- }
- sort(perem.begin(), perem.end());
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < k; j++) {
- if (perem.size() <= j) {
- cin >> a1;
- } else {
- cin >> equals[perem[j]];
- }
- }
- cout << parse() << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement