func_code_string: #include <bits/stdc++.h>   using namespace std;   struct node {     bool flag;     vector<int> op;   };   map<string, node> def;   map<char, int> op;   void del_space(string tmp) {     int x = tmp.find_first_not_of(   );     tmp.erase(0, x);     x = tmp.find_last_not_of(   );     tmp.erase(x + 1, tmp.length());     string s =   ;     for (int i = 0; i < tmp.length(); i++) {       if (tmp[i] !=    ) {         s += tmp[i];       } else {         if (tmp[i + 1] !=    ) s += tmp[i];       }     }     x = s.find( define ) + 7;     int y = x;     while (s[y] !=    ) y++;     string s1, s2;     s1.append(s.begin() + x, s.begin() + y);     for (int i = y + 1; i < s.length(); i++) {       if (s[i] !=    ) s2 += s[i];     }     node tmp_node;     tmp_node.flag = 0;     int cnt = 0;     for (int i = 0; i < s2.length(); i++) {       if (s2[i] ==  ( ) cnt++;       if (s2[i] ==  ) ) cnt--;       if (op[s2[i]] && cnt == 0) {         tmp_node.op.push_back(op[s2[i]]);       }     }     for (int i = 0; i < s2.length(); i++) {       if (s2[i] ==  *  || s2[i] ==  / ) {         string ss1, ss2;         bool bracket = 0;         if (s2[i + 1] ==  ( ) bracket = 1;         for (int j = i + 1; s2[j] !=  )  && !op[s2[j]] && j < s2.length(); j++) {           ss1 += s2[j];         }         map<string, node>::iterator it = def.find(ss1);         if (it != def.end()) {           if (def[ss1].flag == 1) {             tmp_node.flag = 1;           }           if (bracket == 0) {             for (int k = 0; k < def[ss1].op.size(); k++) {               if (def[ss1].op[k] == 1 || def[ss1].op[k] == 2) {                 tmp_node.flag = 1;               }             }           }         }         bracket = 0;         if (s2[i - 1] ==  ) ) bracket = 1;         for (int j = i - 1; s2[j] !=  (  && !op[s2[j]] && j >= 0; j--) {           ss2 += s2[j];         }         reverse(ss2.begin(), ss2.end());         it = def.find(ss2);         if (it != def.end()) {           if (def[ss2].flag == 1) {             tmp_node.flag = 1;           }           if (bracket == 0) {             for (int k = 0; k < def[ss2].op.size(); k++) {               if (def[ss2].op[k] == 1 || def[ss2].op[k] == 2) {                 tmp_node.flag = 1;               }             }           }         }       }       if (s2[i] ==  - ) {         string ss1;         bool bracket = 0;         if (s2[i + 1] ==  ( ) bracket = 1;         for (int j = i + 1; s2[j] !=  )  && !op[s2[j]] && j < s2.length(); j++) {           ss1 += s2[j];         }         map<string, node>::iterator it = def.find(ss1);         if (it != def.end()) {           if (def[ss1].flag == 1) {             tmp_node.flag = 1;           }           if (bracket == 0) {             for (int k = 0; k < def[ss1].op.size(); k++) {               if (def[ss1].op[k] == 1 || def[ss1].op[k] == 2) {                 tmp_node.flag = 1;               }             }           }         }       }       if (s2[i] ==  / ) {         string ss1;         bool bracket = 0;         if (s2[i + 1] ==  ( ) bracket = 1;         for (int j = i + 1; s2[j] !=  )  && !op[s2[j]] && j < s2.length(); j++) {           ss1 += s2[j];         }         map<string, node>::iterator it = def.find(ss1);         if (it != def.end()) {           if (def[ss1].flag == 1 || (bracket == 0 && !def[ss1].op.empty())) {             tmp_node.flag = 1;           }         }       }     }     def[s1] = tmp_node;   }   int main() {     op[ + ] = 1;     op[ - ] = 2;     op[ * ] = 3;     op[ / ] = 4;     int n, flag = 1;     cin >> n;     getchar();     while (n--) {       string tmp;       getline(cin, tmp);       del_space(tmp);     }     string tmp, exp;     getline(cin, tmp);     int x = tmp.find_first_not_of(   );     tmp.erase(0, x);     x = tmp.find_last_not_of(   );     tmp.erase(x + 1, tmp.length());     for (int i = 0; i < tmp.length(); i++) {       if (tmp[i] !=    ) {         exp += tmp[i];       }     }     for (map<string, node>::iterator it = def.begin(); it != def.end(); ++it) {       if (exp.find(it->first) != string::npos && it->second.flag == 1) {         cout <<  Suspicious  << endl;         return 0;       }     }     for (int i = 0; i < exp.length(); i++) {       if (exp[i] ==  *  || exp[i] ==  / ) {         string s1, s2;         bool bracket = 0;         if (exp[i + 1] ==  ( ) bracket = 1;         for (int j = i + 1; exp[j] !=  )  && !op[exp[j]] && j < exp.length();              j++) {           s1 += exp[j];         }         map<string, node>::iterator it = def.find(s1);         if (it != def.end()) {           if (def[s1].flag == 1) {             cout <<  Suspicious  << endl;             return 0;           }           if (bracket == 0) {             for (int k = 0; k < def[s1].op.size(); k++) {               if (def[s1].op[k] == 1 || def[s1].op[k] == 2) {                 cout <<  Suspicious  << endl;                 return 0;               }             }           }         }         bracket = 0;         if (exp[i - 1] ==  ) ) bracket = 1;         for (int j = i - 1; exp[j] !=  (  && !op[exp[j]] && j >= 0; j--) {           s2 += exp[j];         }         reverse(s2.begin(), s2.end());         it = def.find(s2);         if (it != def.end()) {           if (def[s2].flag == 1) {             cout <<  Suspicious  << endl;             return 0;           }           if (bracket == 0) {             for (int k = 0; k < def[s2].op.size(); k++) {               if (def[s2].op[k] == 1 || def[s2].op[k] == 2) {                 cout <<  Suspicious  << endl;                 return 0;               }             }           }         }       }       if (exp[i] ==  - ) {         string s1;         bool bracket = 0;         if (exp[i + 1] ==  ( ) bracket = 1;         for (int j = i + 1; exp[j] !=  )  && !op[exp[j]] && j < exp.length();              j++) {           s1 += exp[j];         }         map<string, node>::iterator it = def.find(s1);         if (it != def.end()) {           if (def[s1].flag == 1) {             cout <<  Suspicious  << endl;             return 0;           }           if (bracket == 0) {             for (int k = 0; k < def[s1].op.size(); k++) {               if (def[s1].op[k] == 1 || def[s1].op[k] == 2) {                 cout <<  Suspicious  << endl;                 return 0;               }             }           }         }       }       if (exp[i] ==  / ) {         string s1;         bool bracket = 0;         if (exp[i + 1] ==  ( ) bracket = 1;         for (int j = i + 1; exp[j] !=  )  && !op[exp[j]] && j < exp.length();              j++) {           s1 += exp[j];         }         map<string, node>::iterator it = def.find(s1);         if (it != def.end()) {           if (def[s1].flag == 1 || (bracket == 0 && !def[s1].op.empty())) {             cout <<  Suspicious  << endl;             return 0;           }         }       }     }     cout <<  OK  << endl;     return 0;   }   