Loading

Paste #pqhqjrblm

  1. #include <iostream>
  2. #include <set>
  3. #include <vector>
  4. #include <string>
  5. #include <algorithm>
  6. #include <map>
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.     const string END = "END";
  13.    
  14.     // input
  15.     map<pair<string, char>, string> rules;
  16.     while (true) {
  17.         string s1, s2;
  18.         char c;
  19.         cin >> s1;
  20.         if (s1 == END) break;
  21.         cin >> c >> s2;
  22.         rules[make_pair(s1, c)] = s2;
  23.     }
  24.     set<string> finals;
  25.     while (true) {
  26.         string s;
  27.         cin >> s;
  28.         if (s == END) break;
  29.         finals.insert(s);
  30.     }
  31.     string state;
  32.     cin >> state;
  33.     string input;
  34.     cin >> input;
  35.    
  36.     // here we go
  37.     size_t chars_read = 0;
  38.     for (char c : input) {
  39.         if (rules.count(make_pair(state, c)) == 0) {
  40.             cout << 0 << endl;
  41.             cout << chars_read << endl;
  42.             cout << state << endl;
  43.             return 0;
  44.         }
  45.         state = rules[make_pair(state, c)];
  46.         chars_read++;
  47.     }
  48.     // we've gone all the way till the end
  49.     if (finals.count(state)) {
  50.         cout << 1 << endl;
  51.     } else {
  52.         cout << 0 << endl;
  53.     }
  54.     cout << chars_read << endl;
  55.     cout << state << endl;
  56. }