Advertisement
PikMike

Untitled

Jul 23rd, 2017
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.81 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3. #include <ext/pb_ds/tree_policy.hpp>
  4.  
  5. #define pb push_back
  6. #define mp make_pair
  7. #define sz(x) (int)(x).size()
  8. #define ll long long
  9. #define ld long double
  10. #define ft first
  11. #define sc second
  12. #define pii pair<int, int>
  13. #define pll pair<ll, ll>
  14. #define forn(i, t) for(int i = 0; i < (t); i++)
  15. #define fore(i, f, t) for(int i = (f); i < (t); i++)
  16. #define forr(i, f, t) for(int i = (f) - 1; i >= (t); i--)
  17. #define all(x) (x).begin(), (x).end()
  18. #define ins insert
  19.  
  20. using namespace __gnu_pbds;
  21. using namespace std;
  22.  
  23.  
  24. const int INF = 2147483647;
  25. const int MOD = 1000000007;
  26. const ll INF64 = 9223372036854775807;
  27. const ld EPS = 1e-7;
  28.  
  29. set<pair<string, string> > ans;
  30. /*set<string> used, ans;
  31.  
  32.  
  33. void dfs(string s, string k){
  34.     int n = sz(s);
  35.     string t;
  36.     used.insert(s);
  37.     // ans.insert(mp(s, k));
  38.     bool fl = 0;
  39.     fore(i, 1, n){
  40.         if (s[i - 1] == 'n' && s[i] == 'n'){
  41.             t = s.substr(0, i - 1);
  42.             if (i != n - 1)
  43.                 t += s.substr(i + 1, n - (i + 1));
  44.             dfs(t, k + '1');
  45.             fl = 1;
  46.         }
  47.         else if (s[i - 1] == 'n' && s[i] == 't'){
  48.             t = s.substr(0, i - 1) + 'f';
  49.             if (i != n - 1)
  50.                 t += s.substr(i + 1, n - (i + 1));
  51.             dfs(t, k + '2');
  52.             fl = 1;
  53.         }
  54.         else if (s[i - 1] == 'n' && s[i] == 'f'){
  55.             t = s.substr(0, i - 1) + 't';
  56.             if (i != n - 1)
  57.                 t += s.substr(i + 1, n - (i + 1));
  58.             dfs(t, k + '3');
  59.             fl = 1;
  60.         }
  61.         else if (s[i - 1] == 'f' && s[i] == 'o'){
  62.             t = s.substr(0, i - 1);
  63.             if (i != n - 1)
  64.                 t += s.substr(i + 1, n - (i + 1));
  65.             dfs(t, k + '4');
  66.             fl = 1;
  67.         }
  68.         else if (s[i - 1] == 'o' && s[i] == 'f'){
  69.             t = s.substr(0, i - 1);
  70.             if (i != n - 1)
  71.                 t += s.substr(i + 1, n - (i + 1));
  72.             dfs(t, k + '5');
  73.             fl = 1;
  74.         }
  75.     }
  76.     fore(i, 1, n - 1){
  77.         if (s[i - 1] == 't' && s[i] == 'o' && s[i + 1] == 't'){
  78.             t = s.substr(0, i - 1) + 't';
  79.             if (i != n - 2)
  80.                 t += s.substr(i + 2, n - (i + 2));
  81.             dfs(t, k + '6');
  82.             fl = 1;
  83.         }
  84.     }
  85.     if (!fl)
  86.         ans.ins(k);
  87.  
  88. }*/
  89.  
  90. // vector<string> a = {"<>*<", "em", "d|", "d>", "dm", "|>*<", "e|", "e>"};
  91. // vector<string> b = {"<e", "|e", "|md", ">", "md", ">*<d", "e", ">"};
  92. // vector<int> c = {5, 7, 2, 4, 3, 1, 6, 8};
  93.  
  94. vector<string> a = {"|>*<", "d|", "dm", "d>", "<>*<", "e|", "em", "e>"};
  95. vector<string> b = {">*<d", "|md", "md", ">", "<e", "e", "|e", ">"};
  96.  
  97.  
  98. void dfs(string s, string ans){
  99.     bool fl = 0;
  100.     forn(i, sz(a))
  101.         if (s.find(a[i]) != string::npos){
  102.             ans += ('1' + i);
  103.             string t = s;
  104.             t.replace(t.find(a[i]), sz(a[i]), b[i]);
  105.             dfs(t, ans);
  106.             fl = 1;
  107.             break;
  108.         }
  109.     if (!fl){
  110.         cout << ans << "\n";
  111.     }
  112. }
  113.  
  114. // 5.  -> <e
  115. // 7. em -> |e
  116. // 2. d| -> |md
  117. // 4. d> -> >
  118. // 3. dm -> md
  119. // 1. |>*< -> >*<d
  120. // 6. e| -> e
  121. // 8. e> -> >
  122. // 57243168
  123.  
  124.  
  125.  
  126. int main(){
  127.     // dfs("fonfont", "");
  128.     dfs("<|>*<||>", "");
  129.     // cout << "vector<string> a = {";
  130.     // forn(i, sz(c))
  131.     //     forn(j, sz(c))
  132.     //         if (c[j] == i + 1)
  133.     //             cout << '"' << a[j] << '"' << ", ";
  134.     // cout << "};\n";
  135.     // cout << "vector<string> b = {";
  136.     // forn(i, sz(c))
  137.     //     forn(j, sz(c))
  138.     //         if (c[j] == i + 1)
  139.     //             cout << '"' << b[j] << '"' << ", ";
  140.     // cout << "};\n";
  141.     /*cout << sz(ans) << "\n";
  142.     for (auto it = ans.begin(); it != ans.end(); it++)
  143.         cout << *it << "\n";*/
  144.     return 0;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement